{ "listing": { "skills": [ { "path": ".claude/skills/speckit-analyze/SKILL.md", "name": "speckit-analyze", "description": "Perform a non-destructive cross-artifact consistency and quality analysis across spec.md, plan.md, and tasks.md after task generation.", "files": { ".claude/skills/speckit-analyze/SKILL.md": "3237cd827194efaf6bb06ba05ef9bc1a703a223d362f5e34d0558c5a38ae34d0" } }, { "path": ".claude/skills/speckit-checklist/SKILL.md", "name": "speckit-checklist", "description": "Generate a custom checklist for the current feature based on user requirements.", "files": { ".claude/skills/speckit-checklist/SKILL.md": "5dc436df0c727e9078bf182dd385e5cb1b60ee67ebe644d3f659ec12e3b78abb" } }, { "path": ".claude/skills/speckit-clarify/SKILL.md", "name": "speckit-clarify", "description": "Identify underspecified areas in the current feature spec by asking up to 5 highly targeted clarification questions and encoding answers back into the spec.", "files": { ".claude/skills/speckit-clarify/SKILL.md": "164f49ef87cb2e922585316f5281b455a8e1940b1efd25317d517a567acae472" } }, { "path": ".claude/skills/speckit-constitution/SKILL.md", "name": "speckit-constitution", "description": "Create or update the project constitution from interactive or provided principle inputs.", "files": { ".claude/skills/speckit-constitution/SKILL.md": "60c27f3962e78edf204b2b2e7cba91a616980860b61d6bf2051dc6965d483dda" } }, { "path": ".claude/skills/speckit-converge/SKILL.md", "name": "speckit-converge", "description": "Assess the current codebase against the feature's spec, plan, and tasks, then append any remaining unbuilt work as new tasks to tasks.md so implement can complete it.", "files": { ".claude/skills/speckit-converge/SKILL.md": "fac66428c93e6e4fa0559a618a620d979fd8124d567f6f79db741fce0081cb3d" } }, { "path": ".claude/skills/speckit-implement/SKILL.md", "name": "speckit-implement", "description": "Execute the implementation plan by processing and executing all tasks defined in tasks.md", "files": { ".claude/skills/speckit-implement/SKILL.md": "7186d59488f89dcf23abd17baed118b05c242d4f62f1de3f9f44625a2b1728f0" } }, { "path": ".claude/skills/speckit-plan/SKILL.md", "name": "speckit-plan", "description": "Execute the implementation planning workflow using the plan template to generate design artifacts.", "files": { ".claude/skills/speckit-plan/SKILL.md": "9e97fc0b4ce895c70a1ea720dc0377618c23e27c83ecf4d87b6e0f6c323790a4" } }, { "path": ".claude/skills/speckit-specify/SKILL.md", "name": "speckit-specify", "description": "Create or update the feature specification from a natural language feature description.", "files": { ".claude/skills/speckit-specify/SKILL.md": "d4d93f2444355136e78bb533988aa2dd560dc4b258f4923f67b1a437e7de38f8" } }, { "path": ".claude/skills/speckit-tasks/SKILL.md", "name": "speckit-tasks", "description": "Generate an actionable, dependency-ordered tasks.md for the feature based on available design artifacts.", "files": { ".claude/skills/speckit-tasks/SKILL.md": "d148aeda1011260c4465c5f105fa1e045a0b0224ccb3e6e0c1ec32c732cae1ae" } }, { "path": ".claude/skills/speckit-taskstoissues/SKILL.md", "name": "speckit-taskstoissues", "description": "Convert existing tasks into actionable, dependency-ordered GitHub issues for the feature based on available design artifacts.", "files": { ".claude/skills/speckit-taskstoissues/SKILL.md": "464bbaf464a28ffa371b0452599c18e7cb5799630148d9f945e6a4d7066a1234" } }, { "path": "plugins/conventions/skills/adr/SKILL.md", "name": "adr", "description": "Writes a new Architecture Decision Record (next number, NNNN-.md) in the ADR directory from .claude/conventions.json#adrDir (default docs/adr) for a long-term choice made during development. Use when a task introduces a new dependency category, storage format, protocol between apps, ownership boundary, or anything a future dev would ask \"why?\" about — before opening the PR that carries the change.", "files": { "plugins/conventions/skills/adr/SKILL.md": "8700329ef3e01f07cbb853702ded34e125c5a1af7efffff92c72df578bca5882" } }, { "path": "plugins/conventions/skills/app-rules/SKILL.md", "name": "app-rules", "description": "Generates the project-specific rules of one app (or of the single app of a single-app repository) by analysing its code — rings, composition root, import boundaries, external dependencies behind ports, test layout, generated code, recurring patterns — and writes .claude/rules//architecture.md, optionally conventions.md, the -dev agent and the app's rows of the Test layout table, after showing a preview and waiting for confirmation. Use after /conventions:port-claude-config has written the generic rules, when a repo has no .claude/rules//architecture.md, or when the user asks for project or app rules (\"write the rules for \", \"document the architecture of \").", "files": { "plugins/conventions/skills/app-rules/SKILL.md": "25ecdaf80fa3bcbc72c36a332ae7fe790c809e264300f66bba62af72ddd7ccb9" } }, { "path": "plugins/conventions/skills/deps-audit/SKILL.md", "name": "deps-audit", "description": "Runs the CI dependency audit locally with the repo's package manager and resolves advisories the repo way — exact-pinned bumps for direct dependencies first, an override/resolution pin for transitives — then re-audits and re-verifies. Use only when the user asks to audit dependencies or to fix a security advisory reported by CI.", "files": { "plugins/conventions/skills/deps-audit/SKILL.md": "83dff0d8b777b43e8f33ccb4620559f17039f77f52f8608280af13f78396b0c6" } }, { "path": "plugins/conventions/skills/port-claude-config/SKILL.md", "name": "port-claude-config", "description": "Ports the conventions rule set into the current repository — discovers the stack, CI sequences, branches and existing Claude config, shows a mapping table plus the open questions, waits for confirmation, then writes CLAUDE.md, .claude/rules/*, one commands.md per app, the generated AGENTS.md for Codex, .claude/settings.json, .claude/conventions.json and the .gitignore negations. Use when a repo has just installed the plugin, when hooks warn that .claude/conventions.json is missing, when the user says \"port the rules\", \"set up the conventions\", \"bootstrap the Claude config\", or with --refresh to re-apply template changes.", "files": { "plugins/conventions/skills/port-claude-config/SKILL.md": "193248f64014274572d549080a2cdba1856371b1a0052da76c039a931816f6fd", "plugins/conventions/skills/port-claude-config/scripts/discover.sh": "60a21ffabc3854aab94b788acc4b9a8a022131dd0d62e92510960b14c05d76a1", "plugins/conventions/skills/port-claude-config/scripts/refresh.sh": "45c993d7f5f37b3508b9b032aafe712405ec0e215b1d76acfd902dca932f0532", "plugins/conventions/skills/port-claude-config/scripts/render.sh": "f5e10b98abd45a798bf5671880634f4a7caba8484237ad7b43538bb52bf36961" } }, { "path": "plugins/conventions/skills/pr/SKILL.md", "name": "pr", "description": "Opens the current branch's pull request the repo way — conventional title, body with what/why/verification, base = the integration branch from .claude/conventions.json — and, when the diff exceeds the configured size cap, splits it into a GitHub-native stack of chained PRs by logical group. Use for every PR instead of a raw gh pr create, and whenever the user says \"open a PR\", \"create the PR\" or \"stack this\".", "files": { "plugins/conventions/skills/pr/SKILL.md": "85771232f88e9964ca06ca3ec53d11b83354b89baed9576f0b85ace86fa49f9b" } }, { "path": "plugins/conventions/skills/release/SKILL.md", "name": "release", "description": "Prepares the deliberate release PR from the integration branch to the production branch (both from .claude/conventions.json) — changelog grouped by app, conventional title, deploy notes — and waits for checks. Never merges. Use only when the user asks to release / ship / deploy the integration branch.", "files": { "plugins/conventions/skills/release/SKILL.md": "8e680302a802fa46d2f9ca591d33165d8593094f4ef751441b19200d4a58e8ac" } }, { "path": "plugins/conventions/skills/test-gaps/SKILL.md", "name": "test-gaps", "description": "Reports which changed source files have no matching test, using the \"Test layout\" table in .claude/rules/architecture.md to know where each layer's tests live. Use before claiming a change done and before opening a PR; the test-writer agent fills the gaps it reports. Prerequisite - a `verifier` agent must exist in ~/.claude/agents/ (this skill forks into it).", "files": { "plugins/conventions/skills/test-gaps/SKILL.md": "7bb905ab6e487d78dac23ca08c6251deef83d8c7f4e4a8ff57b632b3c0371e0f" } }, { "path": "plugins/conventions/skills/verify-app/SKILL.md", "name": "verify-app", "description": "Runs one app's exact CI sequence locally (an app named in .claude/conventions.json#apps, or all) in a forked verifier context and returns a triage with exact error text. Use before claiming any change done and before opening a PR. Prerequisite - a `verifier` agent must exist in ~/.claude/agents/ (this skill forks into it).", "files": { "plugins/conventions/skills/verify-app/SKILL.md": "b6b9e0b26f9740bea48d8d5ad262576e4bf634fe5e9465de0ea885805bd6e7d3" } } ], "hooks": [ { "path": "plugins/conventions/hooks/hooks.json", "sha256": "1d297d41b1391975b38ae3eb2cf03161d3eacb79a4ebc5162fe33eed46367d43", "event": "PreToolUse", "matcher": "Bash", "declaration": { "type": "command", "command": "${CLAUDE_PLUGIN_ROOT}/hooks/guard-git.sh", "timeout": 10 }, "executed": false }, { "path": "plugins/conventions/hooks/hooks.json", "sha256": "1d297d41b1391975b38ae3eb2cf03161d3eacb79a4ebc5162fe33eed46367d43", "event": "PreToolUse", "matcher": "Bash", "declaration": { "type": "command", "command": "${CLAUDE_PLUGIN_ROOT}/hooks/deps-exact.sh", "timeout": 10 }, "executed": false }, { "path": "plugins/conventions/hooks/hooks.json", "sha256": "1d297d41b1391975b38ae3eb2cf03161d3eacb79a4ebc5162fe33eed46367d43", "event": "PreToolUse", "matcher": "Bash", "declaration": { "type": "command", "command": "${CLAUDE_PLUGIN_ROOT}/hooks/pr-size.sh", "timeout": 20 }, "executed": false }, { "path": "plugins/conventions/hooks/hooks.json", "sha256": "1d297d41b1391975b38ae3eb2cf03161d3eacb79a4ebc5162fe33eed46367d43", "event": "PostToolUse", "matcher": "Edit|Write", "declaration": { "type": "command", "command": "${CLAUDE_PLUGIN_ROOT}/hooks/format.sh", "timeout": 30 }, "executed": false }, { "path": "plugins/conventions/hooks/hooks.json", "sha256": "1d297d41b1391975b38ae3eb2cf03161d3eacb79a4ebc5162fe33eed46367d43", "event": "PostToolUse", "matcher": "Edit|Write", "declaration": { "type": "command", "command": "${CLAUDE_PLUGIN_ROOT}/hooks/agents-md.sh", "timeout": 30 }, "executed": false }, { "path": "plugins/conventions/hooks/hooks.json", "sha256": "1d297d41b1391975b38ae3eb2cf03161d3eacb79a4ebc5162fe33eed46367d43", "event": "SessionStart", "matcher": null, "declaration": { "type": "command", "command": "${CLAUDE_PLUGIN_ROOT}/hooks/branch-info.sh", "timeout": 5 }, "executed": false } ], "executions": [] } }