skills: vendor autonomic-recipe-maintainer + expose all its skills as /cctest-*

One operator interface for both toolkits (operator decision 2026-08-04):
- vendor/autonomic-recipe-maintainer: ARM pinned as a submodule at acd5cfb (latest).
- scripts/gen-cctest-skills.py: generates a cctest-<name> wrapper pair
  (.opencode canonical + .claude thin) for every ARM skill — frontmatter carries ARM's
  own description tagged [recipe-maintainer/cctest]; body points at the canonical
  submodule SKILL.md, sets cwd/sandbox context, and states the policy overrides
  (auto-merge-style ARM flows need per-run operator opt-in; never touch cc-ci infra
  from an ARM skill; submodule is read-only here). Re-run after every submodule bump.
- 30 cctest-* wrappers generated.
- /help: cctest family section + situation-table rows + the cc-ci-vs-cctest rule of thumb.

cctest = the recipe-maintainer test server; these skills run against it + the ARM
sandbox, never against the cc-ci CI server/swarm.
This commit is contained in:
autonomic-bot
2026-08-04 01:36:11 +00:00
parent b462f1f7f1
commit 49854472b8
64 changed files with 1304 additions and 0 deletions
@@ -0,0 +1,13 @@
---
name: cctest-init-instance
description: "[recipe-maintainer/cctest] Deploy all maintained recipes to the active test instance from scratch (Wraps the autonomic-recipe-maintainer skill /init-instance; runs against the cctest test server + ARM sandbox, not cc-ci. Invoke as /cctest-init-instance.)"
---
# cctest-init-instance (thin wrapper)
The canonical definition of this skill lives in the **opencode** position:
**`.opencode/skills/cctest-init-instance/SKILL.md`**
Read that file. It in turn wraps the ARM submodule skill
`vendor/autonomic-recipe-maintainer/.opencode/skills/init-instance/SKILL.md`.
+13
View File
@@ -0,0 +1,13 @@
---
name: cctest-intro
description: "[recipe-maintainer/cctest] Explain what this project is and how to get started (Wraps the autonomic-recipe-maintainer skill /intro; runs against the cctest test server + ARM sandbox, not cc-ci. Invoke as /cctest-intro.)"
---
# cctest-intro (thin wrapper)
The canonical definition of this skill lives in the **opencode** position:
**`.opencode/skills/cctest-intro/SKILL.md`**
Read that file. It in turn wraps the ARM submodule skill
`vendor/autonomic-recipe-maintainer/.opencode/skills/intro/SKILL.md`.
@@ -0,0 +1,13 @@
---
name: cctest-new-recipe-guide
description: "[recipe-maintainer/cctest] Guide for developing a new Co-op Cloud recipe from scratch (Wraps the autonomic-recipe-maintainer skill /new-recipe-guide; runs against the cctest test server + ARM sandbox, not cc-ci. Invoke as /cctest-new-recipe-guide.)"
---
# cctest-new-recipe-guide (thin wrapper)
The canonical definition of this skill lives in the **opencode** position:
**`.opencode/skills/cctest-new-recipe-guide/SKILL.md`**
Read that file. It in turn wraps the ARM submodule skill
`vendor/autonomic-recipe-maintainer/.opencode/skills/new-recipe-guide/SKILL.md`.
@@ -0,0 +1,13 @@
---
name: cctest-opencode-sync
description: "[recipe-maintainer/cctest] Ensure every Claude skill has a corresponding OpenCode skill alias (Wraps the autonomic-recipe-maintainer skill /opencode-sync; runs against the cctest test server + ARM sandbox, not cc-ci. Invoke as /cctest-opencode-sync.)"
---
# cctest-opencode-sync (thin wrapper)
The canonical definition of this skill lives in the **opencode** position:
**`.opencode/skills/cctest-opencode-sync/SKILL.md`**
Read that file. It in turn wraps the ARM submodule skill
`vendor/autonomic-recipe-maintainer/.opencode/skills/opencode-sync/SKILL.md`.
@@ -0,0 +1,13 @@
---
name: cctest-recipe-check
description: "[recipe-maintainer/cctest] Fetch a Co-op Cloud recipe and check for available upgrades (Wraps the autonomic-recipe-maintainer skill /recipe-check; runs against the cctest test server + ARM sandbox, not cc-ci. Invoke as /cctest-recipe-check.)"
---
# cctest-recipe-check (thin wrapper)
The canonical definition of this skill lives in the **opencode** position:
**`.opencode/skills/cctest-recipe-check/SKILL.md`**
Read that file. It in turn wraps the ARM submodule skill
`vendor/autonomic-recipe-maintainer/.opencode/skills/recipe-check/SKILL.md`.
@@ -0,0 +1,13 @@
---
name: cctest-recipe-create-pr
description: "[recipe-maintainer/cctest] Push local recipe commits to git.autonomic.zone and open a PR against an upstream-synced main branch (Wraps the autonomic-recipe-maintainer skill /recipe-create-pr; runs against the cctest test server + ARM sandbox, not cc-ci. Invoke as /cctest-recipe-create-pr.)"
---
# cctest-recipe-create-pr (thin wrapper)
The canonical definition of this skill lives in the **opencode** position:
**`.opencode/skills/cctest-recipe-create-pr/SKILL.md`**
Read that file. It in turn wraps the ARM submodule skill
`vendor/autonomic-recipe-maintainer/.opencode/skills/recipe-create-pr/SKILL.md`.
@@ -0,0 +1,13 @@
---
name: cctest-recipe-deploy
description: "[recipe-maintainer/cctest] Deploy the local recipe checkout to the test instance (Wraps the autonomic-recipe-maintainer skill /recipe-deploy; runs against the cctest test server + ARM sandbox, not cc-ci. Invoke as /cctest-recipe-deploy.)"
---
# cctest-recipe-deploy (thin wrapper)
The canonical definition of this skill lives in the **opencode** position:
**`.opencode/skills/cctest-recipe-deploy/SKILL.md`**
Read that file. It in turn wraps the ARM submodule skill
`vendor/autonomic-recipe-maintainer/.opencode/skills/recipe-deploy/SKILL.md`.
@@ -0,0 +1,13 @@
---
name: cctest-recipe-guidelines
description: "[recipe-maintainer/cctest] Guidelines for all recipe operations including local change preservation, version format, and secrets (Wraps the autonomic-recipe-maintainer skill /recipe-guidelines; runs against the cctest test server + ARM sandbox, not cc-ci. Invoke as /cctest-recipe-guidelines.)"
---
# cctest-recipe-guidelines (thin wrapper)
The canonical definition of this skill lives in the **opencode** position:
**`.opencode/skills/cctest-recipe-guidelines/SKILL.md`**
Read that file. It in turn wraps the ARM submodule skill
`vendor/autonomic-recipe-maintainer/.opencode/skills/recipe-guidelines/SKILL.md`.
@@ -0,0 +1,13 @@
---
name: cctest-recipe-init
description: "[recipe-maintainer/cctest] Create a new test instance and recipe-info for a recipe (Wraps the autonomic-recipe-maintainer skill /recipe-init; runs against the cctest test server + ARM sandbox, not cc-ci. Invoke as /cctest-recipe-init.)"
---
# cctest-recipe-init (thin wrapper)
The canonical definition of this skill lives in the **opencode** position:
**`.opencode/skills/cctest-recipe-init/SKILL.md`**
Read that file. It in turn wraps the ARM submodule skill
`vendor/autonomic-recipe-maintainer/.opencode/skills/recipe-init/SKILL.md`.
@@ -0,0 +1,13 @@
---
name: cctest-recipe-logging
description: "[recipe-maintainer/cctest] Logging instructions for maintaining detailed operation logs in the logs directory (Wraps the autonomic-recipe-maintainer skill /recipe-logging; runs against the cctest test server + ARM sandbox, not cc-ci. Invoke as /cctest-recipe-logging.)"
---
# cctest-recipe-logging (thin wrapper)
The canonical definition of this skill lives in the **opencode** position:
**`.opencode/skills/cctest-recipe-logging/SKILL.md`**
Read that file. It in turn wraps the ARM submodule skill
`vendor/autonomic-recipe-maintainer/.opencode/skills/recipe-logging/SKILL.md`.
@@ -0,0 +1,13 @@
---
name: cctest-recipe-new-tag
description: "[recipe-maintainer/cctest] Bump the recipe version and create an annotated git tag (Wraps the autonomic-recipe-maintainer skill /recipe-new-tag; runs against the cctest test server + ARM sandbox, not cc-ci. Invoke as /cctest-recipe-new-tag.)"
---
# cctest-recipe-new-tag (thin wrapper)
The canonical definition of this skill lives in the **opencode** position:
**`.opencode/skills/cctest-recipe-new-tag/SKILL.md`**
Read that file. It in turn wraps the ARM submodule skill
`vendor/autonomic-recipe-maintainer/.opencode/skills/recipe-new-tag/SKILL.md`.
@@ -0,0 +1,13 @@
---
name: cctest-recipe-overview
description: "[recipe-maintainer/cctest] Check all maintained recipes and recommend what to upgrade (Wraps the autonomic-recipe-maintainer skill /recipe-overview; runs against the cctest test server + ARM sandbox, not cc-ci. Invoke as /cctest-recipe-overview.)"
---
# cctest-recipe-overview (thin wrapper)
The canonical definition of this skill lives in the **opencode** position:
**`.opencode/skills/cctest-recipe-overview/SKILL.md`**
Read that file. It in turn wraps the ARM submodule skill
`vendor/autonomic-recipe-maintainer/.opencode/skills/recipe-overview/SKILL.md`.
@@ -0,0 +1,13 @@
---
name: cctest-recipe-review
description: "[recipe-maintainer/cctest] Review a recipe for Co-op Cloud best practices (Wraps the autonomic-recipe-maintainer skill /recipe-review; runs against the cctest test server + ARM sandbox, not cc-ci. Invoke as /cctest-recipe-review.)"
---
# cctest-recipe-review (thin wrapper)
The canonical definition of this skill lives in the **opencode** position:
**`.opencode/skills/cctest-recipe-review/SKILL.md`**
Read that file. It in turn wraps the ARM submodule skill
`vendor/autonomic-recipe-maintainer/.opencode/skills/recipe-review/SKILL.md`.
@@ -0,0 +1,13 @@
---
name: cctest-recipe-test-all
description: "[recipe-maintainer/cctest] Run tests for all maintained recipes, deploying each one at a time (Wraps the autonomic-recipe-maintainer skill /recipe-test-all; runs against the cctest test server + ARM sandbox, not cc-ci. Invoke as /cctest-recipe-test-all.)"
---
# cctest-recipe-test-all (thin wrapper)
The canonical definition of this skill lives in the **opencode** position:
**`.opencode/skills/cctest-recipe-test-all/SKILL.md`**
Read that file. It in turn wraps the ARM submodule skill
`vendor/autonomic-recipe-maintainer/.opencode/skills/recipe-test-all/SKILL.md`.
@@ -0,0 +1,13 @@
---
name: cctest-recipe-test-backup
description: "[recipe-maintainer/cctest] Test backing up and restoring a recipe's test instance (Wraps the autonomic-recipe-maintainer skill /recipe-test-backup; runs against the cctest test server + ARM sandbox, not cc-ci. Invoke as /cctest-recipe-test-backup.)"
---
# cctest-recipe-test-backup (thin wrapper)
The canonical definition of this skill lives in the **opencode** position:
**`.opencode/skills/cctest-recipe-test-backup/SKILL.md`**
Read that file. It in turn wraps the ARM submodule skill
`vendor/autonomic-recipe-maintainer/.opencode/skills/recipe-test-backup/SKILL.md`.
@@ -0,0 +1,13 @@
---
name: cctest-recipe-test-new
description: "[recipe-maintainer/cctest] Test a recipe's first-time initialization from scratch (Wraps the autonomic-recipe-maintainer skill /recipe-test-new; runs against the cctest test server + ARM sandbox, not cc-ci. Invoke as /cctest-recipe-test-new.)"
---
# cctest-recipe-test-new (thin wrapper)
The canonical definition of this skill lives in the **opencode** position:
**`.opencode/skills/cctest-recipe-test-new/SKILL.md`**
Read that file. It in turn wraps the ARM submodule skill
`vendor/autonomic-recipe-maintainer/.opencode/skills/recipe-test-new/SKILL.md`.
@@ -0,0 +1,13 @@
---
name: cctest-recipe-test-update
description: "[recipe-maintainer/cctest] Test upgrading a recipe's test instance using abra app deploy (Wraps the autonomic-recipe-maintainer skill /recipe-test-update; runs against the cctest test server + ARM sandbox, not cc-ci. Invoke as /cctest-recipe-test-update.)"
---
# cctest-recipe-test-update (thin wrapper)
The canonical definition of this skill lives in the **opencode** position:
**`.opencode/skills/cctest-recipe-test-update/SKILL.md`**
Read that file. It in turn wraps the ARM submodule skill
`vendor/autonomic-recipe-maintainer/.opencode/skills/recipe-test-update/SKILL.md`.
@@ -0,0 +1,13 @@
---
name: cctest-recipe-test
description: "[recipe-maintainer/cctest] Run all tests for a Co-op Cloud recipe (Wraps the autonomic-recipe-maintainer skill /recipe-test; runs against the cctest test server + ARM sandbox, not cc-ci. Invoke as /cctest-recipe-test.)"
---
# cctest-recipe-test (thin wrapper)
The canonical definition of this skill lives in the **opencode** position:
**`.opencode/skills/cctest-recipe-test/SKILL.md`**
Read that file. It in turn wraps the ARM submodule skill
`vendor/autonomic-recipe-maintainer/.opencode/skills/recipe-test/SKILL.md`.
@@ -0,0 +1,13 @@
---
name: cctest-recipe-upgrade-apply
description: "[recipe-maintainer/cctest] Execute a planned recipe upgrade — apply changes, deploy, test, commit/tag (Wraps the autonomic-recipe-maintainer skill /recipe-upgrade-apply; runs against the cctest test server + ARM sandbox, not cc-ci. Invoke as /cctest-recipe-upgrade-apply.)"
---
# cctest-recipe-upgrade-apply (thin wrapper)
The canonical definition of this skill lives in the **opencode** position:
**`.opencode/skills/cctest-recipe-upgrade-apply/SKILL.md`**
Read that file. It in turn wraps the ARM submodule skill
`vendor/autonomic-recipe-maintainer/.opencode/skills/recipe-upgrade-apply/SKILL.md`.
@@ -0,0 +1,13 @@
---
name: cctest-recipe-upgrade-cron-all
description: "[recipe-maintainer/cctest] Autonomous weekly upgrade run — overview all recipes, upgrade each end-to-end (sequentially by default, parallel with --parallel), open PRs (Wraps the autonomic-recipe-maintainer skill /recipe-upgrade-cron-all; runs against the cctest test server + ARM sandbox, not cc-ci. Invoke as /cctest-recipe-upgrade-cron-all.)"
---
# cctest-recipe-upgrade-cron-all (thin wrapper)
The canonical definition of this skill lives in the **opencode** position:
**`.opencode/skills/cctest-recipe-upgrade-cron-all/SKILL.md`**
Read that file. It in turn wraps the ARM submodule skill
`vendor/autonomic-recipe-maintainer/.opencode/skills/recipe-upgrade-cron-all/SKILL.md`.
@@ -0,0 +1,13 @@
---
name: cctest-recipe-upgrade-full
description: "[recipe-maintainer/cctest] Plan and apply a recipe upgrade end-to-end, no human review in the middle (Wraps the autonomic-recipe-maintainer skill /recipe-upgrade-full; runs against the cctest test server + ARM sandbox, not cc-ci. Invoke as /cctest-recipe-upgrade-full.)"
---
# cctest-recipe-upgrade-full (thin wrapper)
The canonical definition of this skill lives in the **opencode** position:
**`.opencode/skills/cctest-recipe-upgrade-full/SKILL.md`**
Read that file. It in turn wraps the ARM submodule skill
`vendor/autonomic-recipe-maintainer/.opencode/skills/recipe-upgrade-full/SKILL.md`.
@@ -0,0 +1,13 @@
---
name: cctest-recipe-upgrade-plan
description: "[recipe-maintainer/cctest] Create a detailed upgrade plan for a recipe (Wraps the autonomic-recipe-maintainer skill /recipe-upgrade-plan; runs against the cctest test server + ARM sandbox, not cc-ci. Invoke as /cctest-recipe-upgrade-plan.)"
---
# cctest-recipe-upgrade-plan (thin wrapper)
The canonical definition of this skill lives in the **opencode** position:
**`.opencode/skills/cctest-recipe-upgrade-plan/SKILL.md`**
Read that file. It in turn wraps the ARM submodule skill
`vendor/autonomic-recipe-maintainer/.opencode/skills/recipe-upgrade-plan/SKILL.md`.
@@ -0,0 +1,13 @@
---
name: cctest-recipe-upstream
description: "[recipe-maintainer/cctest] From a git.autonomic.zone review-PR URL, fetch the branch + tag locally and emit the commands to open the upstream PR on git.coopcloud.tech (Wraps the autonomic-recipe-maintainer skill /recipe-upstream; runs against the cctest test server + ARM sandbox, not cc-ci. Invoke as /cctest-recipe-upstream.)"
---
# cctest-recipe-upstream (thin wrapper)
The canonical definition of this skill lives in the **opencode** position:
**`.opencode/skills/cctest-recipe-upstream/SKILL.md`**
Read that file. It in turn wraps the ARM submodule skill
`vendor/autonomic-recipe-maintainer/.opencode/skills/recipe-upstream/SKILL.md`.
@@ -0,0 +1,13 @@
---
name: cctest-setup-sandbox
description: "[recipe-maintainer/cctest] Guide for setting up a sandboxed environment to run the agent with recipe-maintainer (Wraps the autonomic-recipe-maintainer skill /setup-sandbox; runs against the cctest test server + ARM sandbox, not cc-ci. Invoke as /cctest-setup-sandbox.)"
---
# cctest-setup-sandbox (thin wrapper)
The canonical definition of this skill lives in the **opencode** position:
**`.opencode/skills/cctest-setup-sandbox/SKILL.md`**
Read that file. It in turn wraps the ARM submodule skill
`vendor/autonomic-recipe-maintainer/.opencode/skills/setup-sandbox/SKILL.md`.
@@ -0,0 +1,13 @@
---
name: cctest-switch-default-instance
description: "[recipe-maintainer/cctest] Switch the default test instance (b1cc or t1cc) for all recipe operations (Wraps the autonomic-recipe-maintainer skill /switch-default-instance; runs against the cctest test server + ARM sandbox, not cc-ci. Invoke as /cctest-switch-default-instance.)"
---
# cctest-switch-default-instance (thin wrapper)
The canonical definition of this skill lives in the **opencode** position:
**`.opencode/skills/cctest-switch-default-instance/SKILL.md`**
Read that file. It in turn wraps the ARM submodule skill
`vendor/autonomic-recipe-maintainer/.opencode/skills/switch-default-instance/SKILL.md`.
@@ -0,0 +1,13 @@
---
name: cctest-sync-secrets
description: "[recipe-maintainer/cctest] Sync Docker secrets from the test server into recipe-info/testsecrets/ (Wraps the autonomic-recipe-maintainer skill /sync-secrets; runs against the cctest test server + ARM sandbox, not cc-ci. Invoke as /cctest-sync-secrets.)"
---
# cctest-sync-secrets (thin wrapper)
The canonical definition of this skill lives in the **opencode** position:
**`.opencode/skills/cctest-sync-secrets/SKILL.md`**
Read that file. It in turn wraps the ARM submodule skill
`vendor/autonomic-recipe-maintainer/.opencode/skills/sync-secrets/SKILL.md`.
+13
View File
@@ -0,0 +1,13 @@
---
name: cctest-t1cc-start
description: "[recipe-maintainer/cctest] Provision the t1cc DigitalOcean test server and deploy Traefik (Wraps the autonomic-recipe-maintainer skill /t1cc-start; runs against the cctest test server + ARM sandbox, not cc-ci. Invoke as /cctest-t1cc-start.)"
---
# cctest-t1cc-start (thin wrapper)
The canonical definition of this skill lives in the **opencode** position:
**`.opencode/skills/cctest-t1cc-start/SKILL.md`**
Read that file. It in turn wraps the ARM submodule skill
`vendor/autonomic-recipe-maintainer/.opencode/skills/t1cc-start/SKILL.md`.
+13
View File
@@ -0,0 +1,13 @@
---
name: cctest-t1cc-stop
description: "[recipe-maintainer/cctest] Destroy the t1cc DigitalOcean test server via terraform (Wraps the autonomic-recipe-maintainer skill /t1cc-stop; runs against the cctest test server + ARM sandbox, not cc-ci. Invoke as /cctest-t1cc-stop.)"
---
# cctest-t1cc-stop (thin wrapper)
The canonical definition of this skill lives in the **opencode** position:
**`.opencode/skills/cctest-t1cc-stop/SKILL.md`**
Read that file. It in turn wraps the ARM submodule skill
`vendor/autonomic-recipe-maintainer/.opencode/skills/t1cc-stop/SKILL.md`.
@@ -0,0 +1,13 @@
---
name: cctest-test-context-reset
description: "[recipe-maintainer/cctest] Undeploy all apps from the test server except traefik (Wraps the autonomic-recipe-maintainer skill /test-context-reset; runs against the cctest test server + ARM sandbox, not cc-ci. Invoke as /cctest-test-context-reset.)"
---
# cctest-test-context-reset (thin wrapper)
The canonical definition of this skill lives in the **opencode** position:
**`.opencode/skills/cctest-test-context-reset/SKILL.md`**
Read that file. It in turn wraps the ARM submodule skill
`vendor/autonomic-recipe-maintainer/.opencode/skills/test-context-reset/SKILL.md`.
+13
View File
@@ -0,0 +1,13 @@
---
name: cctest-test-setup
description: "[recipe-maintainer/cctest] Verify the test environment is configured correctly (Wraps the autonomic-recipe-maintainer skill /test-setup; runs against the cctest test server + ARM sandbox, not cc-ci. Invoke as /cctest-test-setup.)"
---
# cctest-test-setup (thin wrapper)
The canonical definition of this skill lives in the **opencode** position:
**`.opencode/skills/cctest-test-setup/SKILL.md`**
Read that file. It in turn wraps the ARM submodule skill
`vendor/autonomic-recipe-maintainer/.opencode/skills/test-setup/SKILL.md`.