Found while deriving the project-layout map for #10218 (PR #10357). Not fixed there — that card's file surface is content/docs/getting-started/quick-start.mdx only.
What the tree says
packages/cli/src/commands/generate.ts declares seven generators. Their defaultDir values:
| line | type | defaultDir |
|---|
| 18 | object | src/objects |
| 48 | view | src/views |
| 75 | action | src/actions |
| 98 | flow | src/flows |
| 130 | agent | src/agents |
| 154 | dashboard | src/dashboards |
| 172 | app | src/apps |
content/docs/deployment/cli.mdx:1046 documents the agent row, so the generator is advertised, not vestigial.
Why that reads as a defect
packages/spec/src/stack.zod.ts — the agents key's own docblock, ADR-0063 §2:
agents: PLATFORM-INTERNAL (ADR-0063 §2). The kernel ships exactly two agents — ask (data product) and build (authoring product) — bound by surface, never picked from a roster. Tenant/app-package custom agents were withdrawn (ADR-0040 §3 reversed): an agent declared here parses, but the runtime catalog filters non-platform agent records, so it is not a supported extension surface. Author skills instead.
So os g agent writes a file that parses, publishes, and is then filtered out of the runtime catalog. The author gets no error at any step — os validate passes, publish passes, the agent simply never appears. That is the silent-strip failure mode the #4001 campaign spent itself closing, arriving through the scaffolder instead of through a schema key.
The symmetric half: there is no os g skill, and skills is what ADR-0063 names as the third-party extension primitive. The generator roster points at the withdrawn surface and omits the live one.
Corroborating evidence from the examples
No example ships src/agents/, and none writes agents: or skills: in its objectstack.config.ts — checked across examples/app-showcase, examples/app-crm, examples/app-todo, examples/embed-objectql. src/agents/ exists in this repo only as the generator's defaultDir and as the doc row describing it.
Options, not a prescription
- Retire the
agent generator and add a skill one. - Keep
agent but make it print the ADR-0063 status at generation time, so the author learns before publishing rather than after. - Keep both and treat the scaffold as legitimate for the two platform agents — which would need a reason why an app author would scaffold one.
Which of these is right depends on whether ADR-0063's withdrawal is settled or staged; I did not chase that down, and the answer changes the fix.
Filed unassigned. Related but distinct: #10355 (ai/agents.mdx documenting a tombstoned agent.tools) is the same ADR-0063 family at a different site.
Generated by Claude Code
Found while deriving the project-layout map for #10218 (PR #10357). Not fixed there — that card's file surface is
content/docs/getting-started/quick-start.mdxonly.What the tree says
packages/cli/src/commands/generate.tsdeclares seven generators. TheirdefaultDirvalues:defaultDirobjectsrc/objectsviewsrc/viewsactionsrc/actionsflowsrc/flowsagentsrc/agentsdashboardsrc/dashboardsappsrc/appscontent/docs/deployment/cli.mdx:1046documents theagentrow, so the generator is advertised, not vestigial.Why that reads as a defect
packages/spec/src/stack.zod.ts— theagentskey's own docblock, ADR-0063 §2:So
os g agentwrites a file that parses, publishes, and is then filtered out of the runtime catalog. The author gets no error at any step —os validatepasses, publish passes, the agent simply never appears. That is the silent-strip failure mode the #4001 campaign spent itself closing, arriving through the scaffolder instead of through a schema key.The symmetric half: there is no
os g skill, andskillsis what ADR-0063 names as the third-party extension primitive. The generator roster points at the withdrawn surface and omits the live one.Corroborating evidence from the examples
No example ships
src/agents/, and none writesagents:orskills:in itsobjectstack.config.ts— checked acrossexamples/app-showcase,examples/app-crm,examples/app-todo,examples/embed-objectql.src/agents/exists in this repo only as the generator'sdefaultDirand as the doc row describing it.Options, not a prescription
agentgenerator and add askillone.agentbut make it print the ADR-0063 status at generation time, so the author learns before publishing rather than after.Which of these is right depends on whether ADR-0063's withdrawal is settled or staged; I did not chase that down, and the answer changes the fix.
Filed unassigned. Related but distinct: #10355 (
ai/agents.mdxdocumenting a tombstonedagent.tools) is the same ADR-0063 family at a different site.Generated by Claude Code