APM-Packages/corentic-package-manager/skills/cpm-setup/SKILL.md
Tobias J. Endres ae6817d86f feat(cpm): integrate 'apm install' into the guided flow
The rendered preset only configures agents; the skills/instructions
that role allowlists reference are deployed by APM. cpm setup now
detects apm.yml dependencies and offers to run 'apm install' after
rendering (manual command printed when the CLI is missing or stdin
is not a TTY). render/check print it as an explicit next step.

Also:
- next steps now name the absolute directory to start opencode from
  (fixes presets appearing 'missing' when opencode runs in the wrong
  cwd, as hit during first real-world test)
- init no longer prints literal <package-dir> placeholders
- model list is shown once instead of repeating per class
- README: new 'Using the team' section (primitives -> reload ->
  sanity check -> work via orchestrator), activation writes to the
  global user config, troubleshooting entry for missing skills
2026-08-23 18:24:25 +02:00

3.7 KiB
Raw Blame History

name description allowed-tools
cpm-setup Activate when the user wants to set up, render, or troubleshoot a CPM package (APM package + team-profile). Use for cpm init, cpm setup, cpm render, team-profile, model-mapping, oh-my-opencode-slim preset, missing model classes.
Bash(python3 corentic-package-manager/cpm.py *)
Read
Write
Edit
Glob

CPM Setup Skill

Guides the user through: CPM package (APM manifest + team profile) → local model mapping → rendered harness preset (currently: oh-my-opencode-slim).

The flow (ResolveValidateRender)

1. Find the team profile

Check whether a team-profile.yaml exists (package root or corentic-package-manager/examples/package/team-profile.yaml). Read it and summarize for the user:

Profile: acme.job-applications
Roles: orchestrator → strong-generalist, researcher → fast-research,
        writer → strong-writing, checker → high-reasoning, notifier → cheap-reliable
MCPs required: openviking, sharelatex (+ websearch/webfetch as OpenCode-native)

2. Check the mapping

Check ~/.config/cpm/model-mapping.yaml. For every model class used in the profile an entry must exist.

If a model class is missing, offer the user concrete options (list available models from ~/.config/opencode/opencode.jsonc):

No model assigned for 'high-reasoning'.
1. Pick an existing model (e.g. ollama/qwen3.6:35b-a3b-q4_K_M)
2. Configure a new provider/model in opencode.jsonc
3. Abort

After selection write the mapping and optionally mark # selected_by: user.

Alternatively use the interactive commands: cpm init --fill and cpm setup.

3. Check MCPs

Compare the MCPs named in the profile against the mcp section in ~/.config/opencode/opencode.jsonc. Report missing ones to the user never silently ignore. OpenCode-native tools (websearch, webfetch) are not MCPs and need no entry.

4. Render

python3 corentic-package-manager/cpm.py render --package <package-dir>

Show the output including warnings. The file .opencode/oh-my-opencode-slim.json is generated never edit it manually.

5. Install package primitives

If the package declares an apm.yml with APM dependencies, the skills/instructions the roles reference are NOT deployed by cpm APM does that:

cd <package-dir>
apm install        # requires the apm CLI (pip install apm-cli)

cpm setup offers this step automatically; when guiding manually, always run it before activation if dependencies exist.

6. Activate

Guide the user: cd <package-dir> (the generated config lives in its .opencode/ directory!) → start opencode/preset <team-id> → reload. Preset switches and skill loading both take effect only after a reload (by design). Activating writes the preset name to the global user config, so it persists across projects until switched again.

Using the team

After activation the user works via the orchestrator in normal language ("Review X against our standards"). The orchestrator delegates per the generated routing prompts and consolidates results. Verify first with /agents and "ping all agents".

Error handling

Error Fix
"Model class X is not mapped" Step 2: add to mapping
"MCP ... not configured in opencode.json" Step 3: set up the MCP or adjust the role
"No team profile found" Check path, use --team-file
Invalid YAML Follow the line number in the error message

Rules

  • Never guess or assign models yourself always let the user choose.
  • Never edit the generated .opencode/oh-my-opencode-slim.json directly; sources are the team profile + mapping.
  • Only ever tighten package security boundaries (MCP/skill allowlists), never widen them.