You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Epic: #576 · Depends on: nothing (reads the content library; independent of the declaration format and resolver) · Priority: do first
Problem
The content library's artifacts — rulebooks, skills, and subagents — are discoverable only by browsing the source tree. There's no command to list what's available with its metadata.
Context
Three content subtrees, resolved via resolveContentDir(), each with a distinct frontmatter schema:
Rulebooks (content/guidance/rulebooks/*.md): slug, description, delivery, version — validated by RulebookFrontmatterSchema.
The package README documents only preferences.yaml — it has no CLI commands section today.
Proposed solution
Add a top-level library command with a list subcommand (new src/commands/library-list.ts), wired into cli.ts following the existing generate <target> two-token pattern. Enumerate each subtree via resolveContentDir(), parse each artifact's frontmatter, and print an aligned plain-text table — one row per artifact.
Columns: type, slug, delivery, description, normalized across the heterogeneous schemas:
type — rulebook / skill / subagent, prefixed with an identifying emoji: 📕 rulebook, 🪄 skill, 🤖 subagent.
slug — the stable handle: the rulebook slug, or the skill/subagent name.
delivery — the rulebook's delivery value (e.g. ambient, skill); skill for skills and subagent for subagents. Accurate per kind, never invented.
description — the frontmatter description, last column, wrapped with a hanging indent so continuation lines align under the description column; full text preserved. Wrap width is the terminal width at a TTY, a fixed width when piped (keeping output deterministic for tests).
No version column: the library holds one version of each artifact and only the latest is usable, so a version number aids no selection and would be empty for all but rulebooks.
Reuse RulebookFrontmatterSchema to parse rulebooks; read name/description from skill and subagent frontmatter via the existing parseFrontmatter + YAML parse. Rows ordered by type, then slug.
Document the command in printUsage() and add a ## Commands section to the README covering the full CLI surface, so the new command lands documented consistently rather than as the only documented command.
codeassembly-agents library list prints, for each rulebook, skill, and subagent in the shared library, a row with type (emoji + label), slug, delivery, and description.
slug is the rulebook slug or the skill/subagent name; delivery is the rulebook's delivery value, or skill/subagent for those kinds respectively.
Long descriptions wrap with a hanging indent that aligns continuation lines under the description column.
Support directories (_data, _harnesses, _partials) and dotfiles are excluded from enumeration.
Output is deterministically ordered by type, then slug.
library list appears in printUsage(), and the README gains a ## Commands section documenting the CLI.
Epic: #576 · Depends on: nothing (reads the content library; independent of the declaration format and resolver) · Priority: do first
Problem
The content library's artifacts — rulebooks, skills, and subagents — are discoverable only by browsing the source tree. There's no command to list what's available with its metadata.
Context
Three content subtrees, resolved via
resolveContentDir(), each with a distinct frontmatter schema:content/guidance/rulebooks/*.md):slug,description,delivery,version— validated byRulebookFrontmatterSchema.content/skills/*/SKILL.md):name,description,user-invocable.content/subagents/*.md):name,description,tools,maxTurns.The package README documents only
preferences.yaml— it has no CLI commands section today.Proposed solution
Add a top-level
librarycommand with alistsubcommand (newsrc/commands/library-list.ts), wired intocli.tsfollowing the existinggenerate <target>two-token pattern. Enumerate each subtree viaresolveContentDir(), parse each artifact's frontmatter, and print an aligned plain-text table — one row per artifact.Columns: type, slug, delivery, description, normalized across the heterogeneous schemas:
rulebook/skill/subagent, prefixed with an identifying emoji: 📕 rulebook, 🪄 skill, 🤖 subagent.slug, or the skill/subagentname.deliveryvalue (e.g.ambient, skill);skillfor skills andsubagentfor subagents. Accurate per kind, never invented.description, last column, wrapped with a hanging indent so continuation lines align under the description column; full text preserved. Wrap width is the terminal width at a TTY, a fixed width when piped (keeping output deterministic for tests).No
versioncolumn: the library holds one version of each artifact and only the latest is usable, so a version number aids no selection and would be empty for all but rulebooks.Reuse
RulebookFrontmatterSchemato parse rulebooks; readname/descriptionfrom skill and subagent frontmatter via the existingparseFrontmatter+ YAML parse. Rows ordered by type, then slug.Document the command in
printUsage()and add a## Commandssection to the README covering the full CLI surface, so the new command lands documented consistently rather than as the only documented command.Out of scope
_harnesses/.Acceptance criteria
Must have
codeassembly-agents library listprints, for each rulebook, skill, and subagent in the shared library, a row with type (emoji + label), slug, delivery, and description.slugis the rulebookslugor the skill/subagentname;deliveryis the rulebook'sdeliveryvalue, orskill/subagentfor those kinds respectively._data,_harnesses,_partials) and dotfiles are excluded from enumeration.library listappears inprintUsage(), and the README gains a## Commandssection documenting the CLI.