project-capabilities
Project Capabilities - inventory what is installed, generate the awareness rule
Every project trims the stack differently - skills commented out of the manifest, MCPs dropped (memory in a standalone project, angular-cli outside Angular), seats it never installed. A predefined list would name capabilities the project does not have; this skill reads the REAL inventory and generates the rule from it, so every session knows exactly what this project can do - and never gets steered at a capability that is not there.
The run - inventory, then generate
1. INVENTORY - read what is actually on disk
- Skills: Glob
.claude/skills/*/SKILL.md, read each frontmatter - collectname, the first sentence ofdescription, and whetherdisable-model-invocation: true(those are the slash-only orchestration skills; the rest self-trigger and need no listing). - Seats: Glob
.claude/agents/*.md- collect the names (the dispatch surface; their own descriptions say when each applies). - MCP servers: read
.mcp.json- the registered server names. - Plugins: best-effort
claude plugin listvia Bash; if the CLI is absent, omit the plugins line rather than guess.
Inventory only - nothing is judged, nothing is read beyond frontmatter and config. No dispatch; the whole run is in-session and cheap.
2. GENERATE - write .claude/rules/baseline-project-capabilities.md
A valid PATHLESS rule (frontmatter with a description: marking it generated, NO paths:), regenerated WHOLESALE each run - it is fully derived, so no upsert, no hand edits to preserve. Keep it lean (always-on tokens are paid every session and subagent); the shape: