{"id":34910545,"url":"https://github.com/athola/skrills","last_synced_at":"2026-04-02T13:14:35.926Z","repository":{"id":325987248,"uuid":"1103296721","full_name":"athola/skrills","owner":"athola","description":"Coordinate skills between Codex, Copilot, and Claude Code. Validates, analyzes, and syncs skills, subagents, commands, and configuration between multiple CLIs.","archived":false,"fork":false,"pushed_at":"2026-01-27T08:15:21.000Z","size":5196,"stargazers_count":44,"open_issues_count":11,"forks_count":8,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-01-27T21:09:18.385Z","etag":null,"topics":["claude-code","claude-skills","codex","codex-cli","codex-skills","copilot","copilot-skills","mcp","mcp-server","skills"],"latest_commit_sha":null,"homepage":"https://athola.github.io/skrills","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/athola.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":"audit.toml","citation":null,"codeowners":null,"security":"docs/security.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null},"funding":{"github":["athola"],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":"athola","thanks_dev":null,"custom":null}},"created_at":"2025-11-24T17:23:54.000Z","updated_at":"2026-01-27T08:44:36.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/athola/skrills","commit_stats":null,"previous_names":["athola/codex-mcp-skills"],"tags_count":42,"template":false,"template_full_name":null,"purl":"pkg:github/athola/skrills","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/athola%2Fskrills","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/athola%2Fskrills/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/athola%2Fskrills/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/athola%2Fskrills/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/athola","download_url":"https://codeload.github.com/athola/skrills/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/athola%2Fskrills/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28974246,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-01T08:16:14.655Z","status":"ssl_error","status_checked_at":"2026-02-01T08:06:51.373Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["claude-code","claude-skills","codex","codex-cli","codex-skills","copilot","copilot-skills","mcp","mcp-server","skills"],"created_at":"2025-12-26T11:07:53.622Z","updated_at":"2026-04-02T13:14:35.920Z","avatar_url":"https://github.com/athola.png","language":"Rust","funding_links":["https://github.com/sponsors/athola","https://buymeacoffee.com/athola"],"categories":[],"sub_categories":[],"readme":"# Skrills\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/icon.png\" alt=\"Skrills Icon\"\u003e\n\u003c/p\u003e\n\n[![Crates.io](https://img.shields.io/crates/v/skrills.svg)](https://crates.io/crates/skrills)\n[![Downloads](https://img.shields.io/crates/d/skrills.svg)](https://crates.io/crates/skrills)\n[![Docs](https://img.shields.io/github/actions/workflow/status/athola/skrills/book-pages.yml?branch=master\u0026label=docs)](https://athola.github.io/skrills/)\n[![CI](https://img.shields.io/github/actions/workflow/status/athola/skrills/ci.yml?branch=master\u0026label=ci)](https://github.com/athola/skrills/actions/workflows/ci.yml)\n[![Coverage](https://img.shields.io/github/actions/workflow/status/athola/skrills/coverage.yml?branch=master\u0026label=coverage)](https://github.com/athola/skrills/actions/workflows/coverage.yml)\n[![Audit](https://img.shields.io/github/actions/workflow/status/athola/skrills/audit.yml?branch=master\u0026label=audit)](https://github.com/athola/skrills/actions/workflows/audit.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n\nSkills support engine for Claude Code, Codex CLI, GitHub Copilot CLI,\nand Cursor.\n\n[Installation](book/src/installation.md) |\n[User Guide](https://athola.github.io/skrills/) |\n[CLI Reference](book/src/cli.md) |\n[MCP Tutorial](docs/tutorials/mcp.md) |\n[FAQ](docs/FAQ.md) |\n[Changelog](book/src/changelog.md)\n\n\u003e **What's new in 0.7.3** -- MCP tool filtering\n\u003e (`allowed_tools`/`disabled_tools`) synced across all adapters,\n\u003e MCP servers panel in TUI and browser dashboards,\n\u003e `/api/mcp-servers` REST endpoint, configurable Unpaywall email,\n\u003e `OffsetDateTime` for discussion timestamps, and SQL upsert fix.\n\u003e See [changelog](book/src/changelog.md).\n\n## Demo\n\n![Skrills Demo](assets/gifs/quickstart.gif)\n\n**TUI dashboard** -- navigate skills, activity, and metrics with\nkeyboard shortcuts:\n\n![TUI Dashboard](assets/gifs/dashboard.gif)\n\nSee the [quickstart tutorial](docs/tutorials/quickstart.md) for a\nwalkthrough, or the [MCP tutorial](docs/tutorials/mcp.md) for server\nsetup.\n\n## Features\n\n- **Cross-CLI validation** -- validates skills against Claude Code\n  (permissive), Codex CLI (strict), Copilot CLI (strict), and Cursor\n  rules. Auto-derives missing YAML frontmatter from file paths and\n  content.\n- **Multi-directional sync** -- syncs skills, commands, agents, MCP\n  servers, rules, and preferences across all four environments. Uses\n  file hashing to respect manual edits so user changes are not\n  overwritten.\n- **Token analytics** -- measures token usage per skill and suggests\n  reductions to fit context windows.\n- **Dependency resolution** -- resolves skill dependencies with cycle\n  detection and semantic versioning constraints.\n- **MCP server** -- 27 tools for validation, sync, intelligence, and\n  project-aware skill generation over stdio or HTTP transport.\n- **Session mining** -- parses Claude Code and Codex CLI session\n  history to improve recommendations based on actual usage.\n- **Visualization** -- TUI and browser dashboard showing discovered\n  skills, validation status, usage metrics, and MCP server\n  configurations with tool filter indicators. The browser dashboard\n  supports light and dark modes. The standalone\n  [`skrills-portal.html`](skrills-portal.html) can be opened directly\n  in a browser or uploaded to integration platforms without a running\n  server.\n- **Discovery deduplication** -- frontmatter identity matching\n  consolidates the same skill installed in multiple locations.\n\n## Installation\n\n**macOS / Linux:**\n```bash\ncurl -LsSf https://raw.githubusercontent.com/athola/skrills/HEAD/scripts/install.sh | sh\n```\n\n**Windows PowerShell:**\n```powershell\npowershell -ExecutionPolicy Bypass -NoLogo -NoProfile -Command ^\n\"Remove-Item alias:curl -ErrorAction SilentlyContinue; iwr https://raw.githubusercontent.com/athola/skrills/HEAD/scripts/install.ps1 -UseBasicParsing | iex\"\n```\n\n**crates.io:** `cargo install skrills`\n\nSee [installation guide](book/src/installation.md) for HTTP transport\nsetup, systemd services, and advanced options.\n\n## Quickstart\n\n```bash\n# Validate skills for Codex/Copilot/Cursor compatibility\nskrills validate --target both --autofix\n\n# Analyze token usage\nskrills analyze --min-tokens 1000 --suggestions\n\n# Sync from Claude to all other CLIs\nskrills sync-all\n\n# Sync between specific environments\nskrills sync --from cursor --to claude\n\n# Start MCP server and open the browser dashboard\nskrills serve --http 127.0.0.1:3000 --open\n\n# Interactive TUI dashboard\nskrills tui\n\n# Launch an agent with automatic backend routing (Claude -\u003e Codex fallback)\nskrills multi-cli-agent my-agent\n```\n\nSee [CLI reference](book/src/cli.md) for all commands including\nskill lifecycle management.\n\n## Supported Environments\n\nSkrills syncs seven asset types across four CLI environments.\nEach cell reflects what the adapter reads and writes today:\n\n| Asset | Claude Code | Codex CLI | Copilot CLI | Cursor |\n|-------|:-----------:|:---------:|:-----------:|:------:|\n| Skills | Y | Y | Y | Y |\n| Commands | Y | Y | -- | Y |\n| Agents | Y | -- | Y | Y |\n| MCP Servers | Y | Y | Y | Y |\n| Hooks | Y | -- | -- | Y |\n| Instructions / Rules | Y | -- | Y | Y |\n| Preferences | Y | Y | Y | -- |\n\nCursor rules (`.mdc` files) are mapped bidirectionally via mode\nderivation (`alwaysApply`, glob-scoped, agent-requested).\nSee [ADR 0006](docs/adr/0006-cursor-rules-mapping.md) for the\nmapping strategy and [sync guide](book/src/sync-guide.md) for\nworkflows.\n\n## Skill Management\n\n```bash\n# Deprecate, rollback, import, or score skills\nskrills skill-deprecate old-skill --replacement \"new-skill\"\nskrills skill-rollback my-skill --version abc123\nskrills skill-import https://example.com/skill.md\nskrills skill-score\n```\n\nSee [CLI reference](book/src/cli.md) for the full set of\n`skill-*` subcommands (`skill-catalog`, `skill-profile`,\n`skill-usage-report`).\n\n## Architecture\n\n| Crate | Purpose |\n|-------|---------|\n| `cli` | Binary entry point (delegates to `server` crate) |\n| `server` | MCP server, HTTP transport, security middleware |\n| `validate` | Validation logic for Claude/Codex/Copilot/Cursor compatibility |\n| `analyze` | Token counting, dependency analysis, optimization |\n| `intelligence` | Recommendations, project analysis, skill generation |\n| `sync` | Multi-directional sync with adapters for each CLI (Claude, Codex, Copilot, Cursor) |\n| `dashboard` | TUI and browser-based skill visualization |\n| `discovery` | Skill discovery and ranking |\n| `state` | Environment config, manifest settings, runtime overrides |\n| `metrics` | SQLite-based telemetry for invocations, validations, sync |\n| `subagents` | Shared subagent runtime and backends |\n| `tome` | Research API orchestration, caching, PDF serving |\n| `test-utils` | Shared test infrastructure (fixtures, RAII guards, temp dirs) |\n\nSee [architecture docs](docs/architecture.md) for the crate\ndependency graph and runtime flow.\n\n## Configuration\n\nCreate `~/.skrills/config.toml` for persistent settings:\n\n```toml\n[serve]\nauth_token = \"your-secret-token\"\ntls_auto = true\ncors_origins = \"https://app.example.com\"\n```\n\nPrecedence: CLI flags \u003e environment variables \u003e config file.\n\nSee [security docs](docs/security.md) for TLS setup (`skrills cert`\nsubcommand) and [FAQ](docs/FAQ.md) for environment variables.\n\n## Documentation\n\n| Resource | Description |\n|----------|-------------|\n| [User Guide](https://athola.github.io/skrills/) | Primary documentation (mdBook) |\n| [CLI Reference](book/src/cli.md) | All commands with examples |\n| [MCP Tutorial](docs/tutorials/mcp.md) | Server setup and tool reference |\n| [Sync Guide](book/src/sync-guide.md) | Cross-CLI sync workflows (Claude, Codex, Copilot, Cursor) |\n| [Token Optimization](book/src/mcp-token-optimization.md) | Context window management |\n| [FAQ](docs/FAQ.md) | Common questions |\n| [Security](docs/security.md) | Auth, TLS, threat model |\n| [Changelog](book/src/changelog.md) | Release history |\n\n## Limitations\n\n- **No runtime skill injection**: Skrills validates and syncs\n  files; it does not inject skills into prompts at runtime.\n- **Copilot command sync**: Copilot CLI does not support slash\n  commands, so command sync is skipped.\n- **Cursor preferences**: Cursor preferences are not yet mapped;\n  preference sync is skipped for Cursor targets.\n- **Empirical mining**: Session history parsing works best with\n  recent Claude Code / Codex CLI versions.\n- **LLM generation**: Requires `ANTHROPIC_API_KEY` or\n  `OPENAI_API_KEY` for skill creation.\n\n## Plugin Marketplaces\n\nSkrills validates, analyzes, and syncs skills from these exemplar\nplugin marketplaces:\n\n- [superpowers](https://github.com/obra/superpowers) -- Opinionated\n  skill pack for Claude Code covering TDD, code review, planning,\n  debugging, and development workflows.\n- [claude-night-market](https://github.com/athola/claude-night-market)\n  -- Plugin marketplace for Claude Code with skills, agents, hooks,\n  and commands across multiple domains.\n\n## Development\n\n```bash\nmake lint test --quiet\n```\n\nRequires Rust 1.75+. See [development guide](book/src/development.md)\nfor test coverage, CI, and contribution workflow.\n\n## Contributing\n\n- **Security issues**: See [security policy](docs/security.md) and\n  [threat model](docs/threat-model.md)\n- **Bug reports**: Include OS, `skrills --version`, and logs\n  (`--trace-wire` for MCP)\n- **Pull requests**: Follow\n  [process guidelines](docs/process-guidelines.md); update docs/tests\n  with code\n\n## License\n\n[MIT](LICENSE)\n\n[![Star History Chart](https://api.star-history.com/svg?repos=athola/skrills\u0026type=date\u0026legend=top-left)](https://www.star-history.com/#athola/skrills\u0026type=date\u0026legend=top-left)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fathola%2Fskrills","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fathola%2Fskrills","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fathola%2Fskrills/lists"}