Framework delivery
Commission
Posed by the operator on 2026-09-23. Decide how Commonplace delivers what agents read — the framework library, global types, review gates, and skills — to installed projects. Today commonplace-init copies all of it into every project, which confuses users and drifts from the installed code (see design.md). On 2026-09-24, at the operator's direction, the proposal library-served-from-the-installed-package was moved into this workshop as design.md and removed from kb/reference/proposals/, so the design is kept in one place while it changes.
Operator direction and constraints
- Copy GBrain by default (2026-09-23). GBrain is Commonplace's dominant competitor. Depart from a GBrain method only for a Commonplace-specific reason, and record the reason.
- One tree, one channel (2026-09-24). The uv-installed package is the only tree that commands, agents, and harnesses read. There is no separate plugin tree, and projects get no copy of framework content. uv is the only release channel. This departs from GBrain, whose CLI and plugins install through separate channels and can skew.
- One install path on every platform (2026-09-24). If one platform needs something different, every platform does it that way; there are no platform-specific install paths. Symlinks are unreliable on Windows, so nothing is linked.
- Init only, per project (2026-09-24). No per-machine setup command.
commonplace-initwrites everything a project needs. - Skill stubs (2026-09-24). Each project gets a stub per skill that redirects to the real skill in the installed package. It costs one extra read per skill use; every alternative was worse.
- Generated routing file (2026-09-24). Agents find the library through a gitignored file that init writes with full paths, not through commands.
- Sub-agents are emulated where missing (2026-09-24). Users should be able to start using Commonplace in a harness without sub-agents, even though skills that need workers are less useful there. The probing agent designs the emulation for its harness.
- The source checkout keeps its skill symlinks and does not run init (2026-09-25).
- Report and source types stay scaffolded into projects (2026-09-25); their schemas stop
$ref-ing the global note schema. - Plan for harnesses without skills (2026-09-24). The routing file carries a skill index that emulates the skills mechanism; stubs stay for harnesses with native skills.
- No hooks (2026-09-24). No harness hooks until hooks are standardised. At least one enterprise user runs their own harness.
- Harness-neutral base (2026-09-24). The design rests on files and a project
AGENTS.md, with Agent Skills as an optional layer above that base. The base must still let an agent find a library instruction that the user names in conversation, outside any skill.
Design
Decided and adopted on 2026-09-25 as ADR 086 (commit e6103225). ADR 086, INSTALL.md, and the code are now authoritative. design.md and alternatives.md are the pre-adoption records; do not update them. This workshop stays open for the follow-ups below.
Open questions
- Missing initialization. In Codex's revision 4 run, an agent in a clone without init found a nearby source checkout and answered from it instead of reporting the missing
library.md. The design now has theAGENTS.mdtemplate say to stop and ask for init; does that work in both harnesses? - Emulated skills. Does the skill index in
library.mdtrigger the right skill reliably when no native skill exists (probe case 9)? In Codex, the agent sees the index only after readinglibrary.md. - Skill metadata. Does any harness need skill metadata beyond name and description copied into the stub? The probe's skills had none.
- The enterprise harness. It loads neither
AGENTS.mdnorCLAUDE.md. What does load standing instructions there, and who can set it? The probe request asks the agent to find out and propose where the pointer line goes. More generally: which of the design's harness assumptions (H1–H6 in design.md) hold there? The enterprise colleague cannot give detailed answers, so the probe request asks whether an agent in the harness can adapt the design to reach five outcomes, and reports whether each was reached and how large any workaround was, and how it works where company policy allows; the table maps an outcome not reached to the assumption that failed. If the harness is built on Codex's app-server,skills/extraRoots/setmay let it discover the package's skills in place. - The router skill at scale. It worked with a small index. Does it still select the right instruction with an index the size of the real library?
- Windows and macOS. Not tested systematically. One Windows observation so far: init crashed on a
settings.local.jsonthat PowerShell 5.1 had written with a byte-order mark; fixed in probe revision 5. Still unknown on Windows: the form of Claude Code's read rule for a Windows path. Do the full paths that init writes, and reads of files undershare/, work on both? - Running sessions. A running Claude Code session picked up skills added after it started. An upgrade inside a running session was not tested.
- Centrally managed settings. Init writes Claude Code's read rule into the project's
.claude/settings.local.json. Does a centrally managed policy override it?
Next steps
- Release. Bump the version and publish to PyPI, the only channel; then install from PyPI on a clean machine, including macOS and Windows where possible, and run
commonplace-initandcommonplace-init --checkin a new project. - Probe follow-ups. Claude Code and Codex run the cases added since revision 4: 8 (the stop-on-missing-init rule), 9 (a skill reached through the index alone), and 10 (a sub-agent). Agents in other harnesses answer the same probe request: Gemini CLI, OpenCode, Cursor, Goose, GitHub Copilot, and enterprise harnesses; enterprise results may come back through the operator, anonymised. Findings that change the decision amend ADR 086.
- Sub-agent emulation. When an emulation is chosen from the probe results, update
cp-skill-ingestto accept it. Its rule allows only a harness-provided sub-agent and forbids launching the harness CLI as a worker. The other skills that need workers (cp-skill-write-multistage,cp-skill-revise-autoreason,analyse-agentic-system) are checked for the same assumption in the same change. - Coupled workshops. Done 2026-09-25: mailbox messages in
kb/messages/ask both workshops under Coupling to reassess the items that assumed a library copy and to reply. Close this item when both replies arrive or their workshops close.
Evaluation boundary
- Harnesses: Claude Code and Codex, plus the base layer in any harness that meets its stated assumptions.
- Operating systems: Linux, macOS, and Windows.
- Places: the source checkout and an installed project.
- Upgrade cases: an upgrade that changes a skill, one that changes only library files, and one that moves the install location.
Coupling
None open.
Closure
The design is recorded in ADR 086. Close when each follow-up above is done or deferred with a trigger and each open question is answered or deferred with a trigger. Then delete this directory and its entry in kb/work/README.md.
Files
Current:
- design.md — the design as it stood at adoption (pre-adoption record; ADR 086 is authoritative)
- alternatives.md — rejected options, why, and the evidence by probe revision (pre-adoption record)
- probe-package/ — the shared probe (revision 6): a throwaway uv package, a test project, the protocol every harness runs, and a results template
- probe-request.md — the open request to agents in any harness to run the probe, with a log of replies
- results-claude-code-r4.md — Claude Code's run of revision 4
- results-codex-r4.md — Codex's run of revision 4
Background research:
- comparable-systems-survey.md — how harnesses and 14 comparable systems deliver skills and libraries
- gbrain-delivery-methods.md — code-grounded study of GBrain v0.54.1.0's delivery methods
Evidence from earlier revisions, cited by alternatives.md:
- probe-results.md — early probes: a Claude Code link-mode plugin, a Codex skill symlink, uv shared data
- results-codex.md — Codex's runs of revisions 1–3
- results-claude-code.md — Claude Code's run of revision 3
Complete file listing (generated at build time)