Reference / In development

solomonar extensionIn development

Choose the stack and add skills or reviewers to a Solomonar project with the solomonar extension commands list, show, add, remove, and new. In development.

On this page

These commands are in development and not in the current build; running one today exits 2 with an unknown-command error. This page describes the planned behavior; the final output may differ in detail.

An extension is one skill or one agent: the rules of a language, library, or practice, a supporting procedure, or an extra reviewer. Extensions are grouped by the type of decision that selects them, so the project's capabilities follow its approved stack. ext is an alias for extension. Until these commands exist, choose catalog extensions with init --ext.

The examples use the specification's ledger project, initialized with the go extension only (P/D-1).

Groups

Group Selects Records a decision
language, architecture, frontend, backend, persistence, testing, operations The stack Yes: adopting or dropping one is an architecture or dependency decision, recorded in docs/decisions.md
workflow Procedures that support the process No
review Extra specialist reviewers No

solomonar extension list

Read-only. Lists the catalog and project extensions by group, with their state, the decision that adopted them, their requirements, and when they apply.

When to use it

When you choose part of the stack, for example after a prototype, or to see which rules apply to the project.

Who runs it

You and agents.

solomonar extension list [--group <group>] [--kind <skill|agent>] [--installed] [--json]

Flags

Flag Meaning
--group Only one group.
--kind Only skills or only agents.
--installed Only installed extensions.

Example

solomonar extension list
GROUP     NAME   KIND   SOURCE   STATUS     DECISION  REQUIRES  APPLIES WHEN
language  go     skill  catalog  installed  P/D-1     -         A change touches Go code
frontend  htmx   skill  catalog  available  -         -         hx-* attributes or endpoints that return fragments
frontend  templ  skill  catalog  available  -         go        *.templ files or the handlers that render them
testing   tdd    skill  catalog  available  -         -         A change adds or changes behavior

solomonar extension show

Read-only. Prints one extension as rendered for this project: its group, source, state, decision, requirements, when it applies, and its rules, including the rules added by the other installed extensions.

When to use it

To read the exact rules an agent follows for a technology before you adopt it, or when a review cites one.

Who runs it

You and agents.

solomonar extension show <name> [--json]

Example

solomonar extension show templ
templ components · frontend skill · catalog · installed under P/D-3 · requires go
Applies when: a change touches *.templ files or the handlers that render them (paths: **/*.templ)
Rendered with: htmx
  templ/C-1  must    *_templ.go files are generated by templ generate and never edited by hand; CI fails when stale
  templ/C-2  must    User data is never rendered through templ.Raw or any other unescaped output
  templ/C-3  should  Components take view models built for the page, not domain entities or database rows
  templ/C-4  must    With htmx: render the fragment component when HX-Request is set, else the page component
File: docs/solomonar/skills/templ/SKILL.md

solomonar extension add

Installs catalog extensions, a project extension from a local directory, or a draft created with extension new, with their runtime stubs. For a stack group, without --decision the CLI records your approved P/D-n in docs/decisions.md and docs/stack.md, superseding the previous selection of that group.

When to use it

When you decide part of the stack, for example htmx for the frontend; when a task's approved decision adopts a technology; or to add a workflow procedure or an extra reviewer.

Who runs it

You, to record a project decision. An orchestrator only with --decision naming an approved task decision, in the task worktree. The state guard denies an agent's stack change without --decision.

solomonar extension add <name | path>... [--decision <ID>] [--rationale <text>] [-y] [--dry-run] [--json]
                        [--kind <skill|agent>] [--group <group>] [--title <text>]
                        [--requires <name>]... [--conflicts <name>]... [--applies-when <text>] [--path <glob>]...

Flags

Flag Meaning
<name | path> Required. Catalog names, draft names, or local directories; several are allowed.
--decision An approved decision that adopts the extension, such as W-002/D-1. Stack groups only.
--rationale The reason recorded with the new P/D-n. Stack groups only.
--kind, --group, --title Metadata of a local directory or draft. kind is inferred when unambiguous; group defaults to workflow for skills and review for agents.
--requires, --conflicts Other extensions this one needs or excludes; repeatable. Local directories and drafts only.
--applies-when, --path When the extension applies, and the matching path globs. --applies-when is required at adoption; without a terminal its absence is interactive_required.
-y, --yes Accept the plan without prompts.
--dry-run Print the plan and write nothing.

Example

You adopt htmx for the frontend:

solomonar extension add htmx
Plan
  extensions
    create  docs/solomonar/skills/htmx/SKILL.md
    create  .claude/skills/htmx/SKILL.md
    create  .agents/skills/htmx/SKILL.md
  decisions
    append  docs/decisions.md   P/D-2 Frontend technologies: htmx (approved, selected by you)
    append  docs/stack.md       frontend: htmx (P/D-2)
  update  AGENTS.md (Extensions: htmx)
  update  .solomonar/manifest.json
Record P/D-2 as your approved decision for the frontend group? [Y/n] y
Added extension htmx (frontend skill) under P/D-2.
  note: P/D-2 approves the technology and its rules; versions stay in the manifests, and every further
        dependency still needs approval (rules section 3).
Next: commit on main: git add AGENTS.md .solomonar .claude .agents docs && git commit -m "docs: adopt the htmx extension (P/D-2)"

An orchestrator applying an approved task decision, in the task worktree, so the extension merges with the task:

solomonar extension add tdd --decision W-002/D-1 --yes
Verified W-002/D-1: approved in docs/decisions.md (selected option: test-driven development for all behavior changes)
Plan
  extensions
    create  docs/solomonar/skills/tdd/SKILL.md
    create  .claude/skills/tdd/SKILL.md
    create  .agents/skills/tdd/SKILL.md
  decisions
    append  docs/stack.md   testing: tdd (W-002/D-1)
  update  AGENTS.md, .solomonar/manifest.json
Added extension tdd (testing skill) under W-002/D-1.
Next: commit in the worktree as "docs(W-002): adopt extensions for W-002/D-1"; they reach main with the task's merge.

An unmet requirement is rejected and writes nothing:

error: extension add rejected (extension_requires)
  check: templ requires go (language), which is not installed
  fix:   solomonar extension add go templ
nothing was written

solomonar extension remove

Removes installed extensions, their unmodified files and runtime stubs, and re-renders the extensions that referred to them. For a stack group it follows the same decision rules as extension add: without --decision it records a superseding P/D-n with the reduced selection, or none when the group becomes empty.

When to use it

When the project drops a technology, practice, procedure, or reviewer. The CLI does not check whether code still uses the technology; it warns that the code loses its rules.

Who runs it

You, or an orchestrator with an approved task decision, as for extension add.

solomonar extension remove <name>... [--decision <ID>] [--rationale <text>] [--keep <path>]... [--overwrite <path>]...
                           [-y] [--dry-run] [--json]

Flags

Flag Meaning
<name> Required. Installed extensions to remove. Core items are rejected with core_item.
--decision, --rationale As for extension add. Stack groups only.
--keep, --overwrite Resolve one modified file, otherwise a conflict (exit 4); one path per flag.
-y, --yes Accept the plan without prompts.
--dry-run Print the plan and write nothing.

Example

solomonar extension remove htmx --rationale "Server-rendered pages only" --yes

The plan records a superseding frontend decision, deletes the htmx files, re-renders templ without its htmx rule, and prints warning: code governed by htmx loses its rules. Removing go while templ is installed is rejected with extension_requires.

solomonar extension new

Creates a draft project extension: a skill or an extra reviewer that the catalog does not cover, such as a domain rule set or an accessibility reviewer. A draft has no decision, adapter, or AGENTS.md entry until you adopt it with extension add <name>. Project extensions are project-owned; upgrades never change them.

When to use it

When the project needs its own rules or reviewer, before writing their content.

Who runs it

You. You or an agent then write the rules, and you adopt the extension.

solomonar extension new <name> --kind <skill|agent> --group <group> [--title <text>] [--requires <name>]...
                        [--conflicts <name>]... [--applies-when <text>] [--path <glob>]... [--dry-run] [--json]

Flags

Flag Meaning
<name> Required. A new name; an existing one is name_collision.
--kind Required. skill or agent.
--group Required. One of the nine groups; workflow and review record no decision.
--title Display title; defaults to the name.
--requires, --conflicts Other extensions this one needs or excludes; repeatable.
--applies-when, --path When the extension applies, and the matching path globs. May be left for adoption.
--dry-run Print the plan and write nothing.

Example

solomonar extension new money --kind skill --group backend --title "Money handling" \
  --applies-when "A change handles monetary amounts"
Created draft project extension money (backend skill, project-owned)
  create  docs/solomonar/skills/money/SKILL.md
  update  .solomonar/manifest.json   (state draft; metadata: group, requires, applies_when, paths)
  no decision, adapter, rendered combination, or AGENTS.md entry until adopted
Write its rules as money/C-n (must|should), then adopt it: solomonar extension add money
Source of truthdocs/cli/interface.md