Repository navigation
faf knows a skills repo when it sees one, and the skills types name their framework: skills is 10 slots, skills-plugin is 14. 2246 tests.
Added
- faf knows a skills repo when it sees one.
faf initreads a repo that shipsSKILL.mdfolders (underskills/, at the top level, or oneSKILL.mdat the root) asskills, and one with a Claude Code plugin manifest (.claude-plugin/plugin.json) asskills-plugin:# found: 7 SKILL.md folders + .claude-plugin/plugin.json. The framework slot names the format:Agent Skills, orClaude Code plugin. Skills are checked last, after every code signal, so a CLI or library that ships a skill keeps its type (faf-cli shipsskills/faf-expertand stayscli). A project's own.claude/skills, and SKILL.md files deeper down (test fixtures), don't count.faf autokeeps the type a file already has.
Changed
- The skills app-types name their framework and runtime.
skillsis 10 slots (was 9): project + human, plus the framework (the skills format, such as Agent Skills or a Claude Code plugin).skills-pluginis 14 (was 12): project + human + universal, plus the framework and the runtime (what runs its build and scripts). A type can now add single slots from outside its categories (APP_TYPE_ADDS), the reverse of the slots aframeworkrepo leaves out. faf autoopens a slot the type adds by name, even where the file saysslotignored(a file fromfaf init, before its type was set). When the slot's other name holds a real value, the stale name is removed.faf autoleaves a file already at 100% as it is, so a stale name there stays until you delete it (the score is right either way). Other types keep the file's ownslotignored, as before.
Install: npm install -g faf-cli · brew install wolfe-jam/faf/faf-cli
FAF defines. AGENTS.md instructs. AI codes.