app-creation
This skill records repository policy for Codex. Use repoctl as the authority for graph,
ownership, affected analysis, task routing, and final hand-off verification, but keep repoctl out of
the inner coding loop unless the graph or boundaries are changing.
When this fires
- The user asks for a new service, app, framework, shared library, client, worker, or foundation
capability inside the monorepo.
- A new directory under
apps/, frameworks/, or foundations/ is needed.
- The user is tempted to copy an existing project by hand.
Choose the project kind
- App: product/domain behavior deployed independently. It may use framework facades and
foundation clients.
- Framework: reusable capability for apps. Public facade is stable; internals stay private.
- Foundation service: platform-owned service with public clients and optional proto ownership.
If the requested code is shared but has no runtime service, prefer a framework. If it owns a
contract or platform runtime, prefer a foundation service.
Workflow
Pick the scaffold command:
repoctl new app apps/<name> --stack rust-api,bun-web
repoctl new framework frameworks/<name> --languages rust,typescript
repoctl new foundation foundations/<name> --clients rust,typescript,python --proto <package>
Include --iac pulumi, --iac terraform, or --iac opentofu only when the project actually
deploys infrastructure.
Review generated metadata before adding domain code:
project.yaml: name, kind, owners, workspaces, tasks, proto ownership, IaC, deploy roots.
README.md: local commands and boundary notes.
AGENTS.md / AGENTS.md: project-local edit constraints.
- source files: runnable starter code and tests, not placeholders.
Make the generated project immediately useful:
Replace example names with domain language, keep the task names (check, test, build) stable,
and add missing owner handles. Do not remove privacy settings such as publish = false or
"private": true unless the repo policy explicitly permits publishing.
Validate once after the scaffold is complete:
repoctl graph validate
repoctl run check --project <project-name>
Keep graph validation as the final scaffold validation. Run the real project check once at
hand-off. Run test or build only when the scaffold includes tests, generated clients, package
metadata, build outputs, deploy artifacts, or task wiring that need verification. Use a dry-run
only when task routing itself is unclear.
Review checklist
- The project kind matches the ownership model.
- Manifest owners and task commands are real, not example placeholders.
- Generated packages are private and internal by default.
- Project docs and agent instructions point to the correct project name and path.
- The first commit leaves
repoctl graph validate green.
- Project checks ran once at hand-off, with test/build gates included only when the scaffold needed
them.
Hand-off
Report the command used, generated project name, owner fields that still need team-specific tuning,
and the validation commands run.
1---2name: app-creation3description: Create new apps, frameworks, and foundation services with repoctl templates and manifests.4---56# app-creation78This skill records repository policy for Codex. Use repoctl as the authority for graph,9ownership, affected analysis, task routing, and final hand-off verification, but keep repoctl out of10the inner coding loop unless the graph or boundaries are changing.1112## When this fires1314- The user asks for a new service, app, framework, shared library, client, worker, or foundation15 capability inside the monorepo.16- A new directory under `apps/`, `frameworks/`, or `foundations/` is needed.17- The user is tempted to copy an existing project by hand.1819## Choose the project kind2021- **App**: product/domain behavior deployed independently. It may use framework facades and22 foundation clients.23- **Framework**: reusable capability for apps. Public facade is stable; internals stay private.24- **Foundation service**: platform-owned service with public clients and optional proto ownership.2526If the requested code is shared but has no runtime service, prefer a framework. If it owns a27contract or platform runtime, prefer a foundation service.2829## Workflow30311. **Pick the scaffold command**:3233 ```bash34 repoctl new app apps/<name> --stack rust-api,bun-web35 repoctl new framework frameworks/<name> --languages rust,typescript36 repoctl new foundation foundations/<name> --clients rust,typescript,python --proto <package>37 ```3839 Include `--iac pulumi`, `--iac terraform`, or `--iac opentofu` only when the project actually40 deploys infrastructure.41422. **Review generated metadata before adding domain code**:4344 - `project.yaml`: name, kind, owners, workspaces, tasks, proto ownership, IaC, deploy roots.45 - `README.md`: local commands and boundary notes.46 - `AGENTS.md` / `AGENTS.md`: project-local edit constraints.47 - source files: runnable starter code and tests, not placeholders.48493. **Make the generated project immediately useful**:5051 Replace example names with domain language, keep the task names (`check`, `test`, `build`) stable,52 and add missing owner handles. Do not remove privacy settings such as `publish = false` or53 `"private": true` unless the repo policy explicitly permits publishing.54554. **Validate once after the scaffold is complete**:5657 ```bash58 repoctl graph validate59 repoctl run check --project <project-name>60 ```6162 Keep graph validation as the final scaffold validation. Run the real project check once at63 hand-off. Run test or build only when the scaffold includes tests, generated clients, package64 metadata, build outputs, deploy artifacts, or task wiring that need verification. Use a dry-run65 only when task routing itself is unclear.6667## Review checklist6869- The project kind matches the ownership model.70- Manifest owners and task commands are real, not example placeholders.71- Generated packages are private and internal by default.72- Project docs and agent instructions point to the correct project name and path.73- The first commit leaves `repoctl graph validate` green.74- Project checks ran once at hand-off, with test/build gates included only when the scaffold needed75 them.7677## Hand-off7879Report the command used, generated project name, owner fields that still need team-specific tuning,80and the validation commands run.81