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,26 @@
---
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 (cctest wrapper)
**Canonical procedure:** `vendor/autonomic-recipe-maintainer/.opencode/skills/init-instance/SKILL.md`
— read it and follow it. This wrapper only sets context + policy.
**Context:** this is an **autonomic-recipe-maintainer (ARM)** skill. It operates on the
recipe-maintainer **cctest** test server / local abra sandbox — NOT on the cc-ci CI server or
its shared swarm. Execute with the submodule as your working directory:
`cd /srv/cc-ci-orch/vendor/autonomic-recipe-maintainer`. If the ARM environment is not yet
configured on this host (`settings.toml` from `settings.toml.example`, sandbox/test instances),
run `/cctest-intro` / `/cctest-setup-sandbox` first.
**Policy overrides (cc-ci-orchestrator conventions win):**
- Anything that would **merge a recipe PR or push a recipe main without review** requires
explicit operator opt-in per run — the cc-ci standing rule is recipe upgrade PRs are
operator-merged, and ARM skills that say otherwise (e.g. full-auto upgrade flows) do NOT
inherit blanket authorization here.
- Never touch cc-ci infrastructure (the CI server, its swarm, `/root/*` clones, the weekly
timers) from an ARM skill — cc-ci work goes through the cc-ci skills.
- The submodule is **pinned**: don't commit into it from here; upstream ARM changes arrive via
a deliberate submodule bump + `scripts/gen-cctest-skills.py` regeneration.
+26
View File
@@ -0,0 +1,26 @@
---
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 (cctest wrapper)
**Canonical procedure:** `vendor/autonomic-recipe-maintainer/.opencode/skills/intro/SKILL.md`
— read it and follow it. This wrapper only sets context + policy.
**Context:** this is an **autonomic-recipe-maintainer (ARM)** skill. It operates on the
recipe-maintainer **cctest** test server / local abra sandbox — NOT on the cc-ci CI server or
its shared swarm. Execute with the submodule as your working directory:
`cd /srv/cc-ci-orch/vendor/autonomic-recipe-maintainer`. If the ARM environment is not yet
configured on this host (`settings.toml` from `settings.toml.example`, sandbox/test instances),
run `/cctest-intro` / `/cctest-setup-sandbox` first.
**Policy overrides (cc-ci-orchestrator conventions win):**
- Anything that would **merge a recipe PR or push a recipe main without review** requires
explicit operator opt-in per run — the cc-ci standing rule is recipe upgrade PRs are
operator-merged, and ARM skills that say otherwise (e.g. full-auto upgrade flows) do NOT
inherit blanket authorization here.
- Never touch cc-ci infrastructure (the CI server, its swarm, `/root/*` clones, the weekly
timers) from an ARM skill — cc-ci work goes through the cc-ci skills.
- The submodule is **pinned**: don't commit into it from here; upstream ARM changes arrive via
a deliberate submodule bump + `scripts/gen-cctest-skills.py` regeneration.
@@ -0,0 +1,26 @@
---
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 (cctest wrapper)
**Canonical procedure:** `vendor/autonomic-recipe-maintainer/.opencode/skills/new-recipe-guide/SKILL.md`
— read it and follow it. This wrapper only sets context + policy.
**Context:** this is an **autonomic-recipe-maintainer (ARM)** skill. It operates on the
recipe-maintainer **cctest** test server / local abra sandbox — NOT on the cc-ci CI server or
its shared swarm. Execute with the submodule as your working directory:
`cd /srv/cc-ci-orch/vendor/autonomic-recipe-maintainer`. If the ARM environment is not yet
configured on this host (`settings.toml` from `settings.toml.example`, sandbox/test instances),
run `/cctest-intro` / `/cctest-setup-sandbox` first.
**Policy overrides (cc-ci-orchestrator conventions win):**
- Anything that would **merge a recipe PR or push a recipe main without review** requires
explicit operator opt-in per run — the cc-ci standing rule is recipe upgrade PRs are
operator-merged, and ARM skills that say otherwise (e.g. full-auto upgrade flows) do NOT
inherit blanket authorization here.
- Never touch cc-ci infrastructure (the CI server, its swarm, `/root/*` clones, the weekly
timers) from an ARM skill — cc-ci work goes through the cc-ci skills.
- The submodule is **pinned**: don't commit into it from here; upstream ARM changes arrive via
a deliberate submodule bump + `scripts/gen-cctest-skills.py` regeneration.
@@ -0,0 +1,26 @@
---
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 (cctest wrapper)
**Canonical procedure:** `vendor/autonomic-recipe-maintainer/.opencode/skills/opencode-sync/SKILL.md`
— read it and follow it. This wrapper only sets context + policy.
**Context:** this is an **autonomic-recipe-maintainer (ARM)** skill. It operates on the
recipe-maintainer **cctest** test server / local abra sandbox — NOT on the cc-ci CI server or
its shared swarm. Execute with the submodule as your working directory:
`cd /srv/cc-ci-orch/vendor/autonomic-recipe-maintainer`. If the ARM environment is not yet
configured on this host (`settings.toml` from `settings.toml.example`, sandbox/test instances),
run `/cctest-intro` / `/cctest-setup-sandbox` first.
**Policy overrides (cc-ci-orchestrator conventions win):**
- Anything that would **merge a recipe PR or push a recipe main without review** requires
explicit operator opt-in per run — the cc-ci standing rule is recipe upgrade PRs are
operator-merged, and ARM skills that say otherwise (e.g. full-auto upgrade flows) do NOT
inherit blanket authorization here.
- Never touch cc-ci infrastructure (the CI server, its swarm, `/root/*` clones, the weekly
timers) from an ARM skill — cc-ci work goes through the cc-ci skills.
- The submodule is **pinned**: don't commit into it from here; upstream ARM changes arrive via
a deliberate submodule bump + `scripts/gen-cctest-skills.py` regeneration.
@@ -0,0 +1,26 @@
---
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 (cctest wrapper)
**Canonical procedure:** `vendor/autonomic-recipe-maintainer/.opencode/skills/recipe-check/SKILL.md`
— read it and follow it. This wrapper only sets context + policy.
**Context:** this is an **autonomic-recipe-maintainer (ARM)** skill. It operates on the
recipe-maintainer **cctest** test server / local abra sandbox — NOT on the cc-ci CI server or
its shared swarm. Execute with the submodule as your working directory:
`cd /srv/cc-ci-orch/vendor/autonomic-recipe-maintainer`. If the ARM environment is not yet
configured on this host (`settings.toml` from `settings.toml.example`, sandbox/test instances),
run `/cctest-intro` / `/cctest-setup-sandbox` first.
**Policy overrides (cc-ci-orchestrator conventions win):**
- Anything that would **merge a recipe PR or push a recipe main without review** requires
explicit operator opt-in per run — the cc-ci standing rule is recipe upgrade PRs are
operator-merged, and ARM skills that say otherwise (e.g. full-auto upgrade flows) do NOT
inherit blanket authorization here.
- Never touch cc-ci infrastructure (the CI server, its swarm, `/root/*` clones, the weekly
timers) from an ARM skill — cc-ci work goes through the cc-ci skills.
- The submodule is **pinned**: don't commit into it from here; upstream ARM changes arrive via
a deliberate submodule bump + `scripts/gen-cctest-skills.py` regeneration.
@@ -0,0 +1,26 @@
---
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 (cctest wrapper)
**Canonical procedure:** `vendor/autonomic-recipe-maintainer/.opencode/skills/recipe-create-pr/SKILL.md`
— read it and follow it. This wrapper only sets context + policy.
**Context:** this is an **autonomic-recipe-maintainer (ARM)** skill. It operates on the
recipe-maintainer **cctest** test server / local abra sandbox — NOT on the cc-ci CI server or
its shared swarm. Execute with the submodule as your working directory:
`cd /srv/cc-ci-orch/vendor/autonomic-recipe-maintainer`. If the ARM environment is not yet
configured on this host (`settings.toml` from `settings.toml.example`, sandbox/test instances),
run `/cctest-intro` / `/cctest-setup-sandbox` first.
**Policy overrides (cc-ci-orchestrator conventions win):**
- Anything that would **merge a recipe PR or push a recipe main without review** requires
explicit operator opt-in per run — the cc-ci standing rule is recipe upgrade PRs are
operator-merged, and ARM skills that say otherwise (e.g. full-auto upgrade flows) do NOT
inherit blanket authorization here.
- Never touch cc-ci infrastructure (the CI server, its swarm, `/root/*` clones, the weekly
timers) from an ARM skill — cc-ci work goes through the cc-ci skills.
- The submodule is **pinned**: don't commit into it from here; upstream ARM changes arrive via
a deliberate submodule bump + `scripts/gen-cctest-skills.py` regeneration.
@@ -0,0 +1,26 @@
---
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 (cctest wrapper)
**Canonical procedure:** `vendor/autonomic-recipe-maintainer/.opencode/skills/recipe-deploy/SKILL.md`
— read it and follow it. This wrapper only sets context + policy.
**Context:** this is an **autonomic-recipe-maintainer (ARM)** skill. It operates on the
recipe-maintainer **cctest** test server / local abra sandbox — NOT on the cc-ci CI server or
its shared swarm. Execute with the submodule as your working directory:
`cd /srv/cc-ci-orch/vendor/autonomic-recipe-maintainer`. If the ARM environment is not yet
configured on this host (`settings.toml` from `settings.toml.example`, sandbox/test instances),
run `/cctest-intro` / `/cctest-setup-sandbox` first.
**Policy overrides (cc-ci-orchestrator conventions win):**
- Anything that would **merge a recipe PR or push a recipe main without review** requires
explicit operator opt-in per run — the cc-ci standing rule is recipe upgrade PRs are
operator-merged, and ARM skills that say otherwise (e.g. full-auto upgrade flows) do NOT
inherit blanket authorization here.
- Never touch cc-ci infrastructure (the CI server, its swarm, `/root/*` clones, the weekly
timers) from an ARM skill — cc-ci work goes through the cc-ci skills.
- The submodule is **pinned**: don't commit into it from here; upstream ARM changes arrive via
a deliberate submodule bump + `scripts/gen-cctest-skills.py` regeneration.
@@ -0,0 +1,26 @@
---
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 (cctest wrapper)
**Canonical procedure:** `vendor/autonomic-recipe-maintainer/.opencode/skills/recipe-guidelines/SKILL.md`
— read it and follow it. This wrapper only sets context + policy.
**Context:** this is an **autonomic-recipe-maintainer (ARM)** skill. It operates on the
recipe-maintainer **cctest** test server / local abra sandbox — NOT on the cc-ci CI server or
its shared swarm. Execute with the submodule as your working directory:
`cd /srv/cc-ci-orch/vendor/autonomic-recipe-maintainer`. If the ARM environment is not yet
configured on this host (`settings.toml` from `settings.toml.example`, sandbox/test instances),
run `/cctest-intro` / `/cctest-setup-sandbox` first.
**Policy overrides (cc-ci-orchestrator conventions win):**
- Anything that would **merge a recipe PR or push a recipe main without review** requires
explicit operator opt-in per run — the cc-ci standing rule is recipe upgrade PRs are
operator-merged, and ARM skills that say otherwise (e.g. full-auto upgrade flows) do NOT
inherit blanket authorization here.
- Never touch cc-ci infrastructure (the CI server, its swarm, `/root/*` clones, the weekly
timers) from an ARM skill — cc-ci work goes through the cc-ci skills.
- The submodule is **pinned**: don't commit into it from here; upstream ARM changes arrive via
a deliberate submodule bump + `scripts/gen-cctest-skills.py` regeneration.
@@ -0,0 +1,26 @@
---
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 (cctest wrapper)
**Canonical procedure:** `vendor/autonomic-recipe-maintainer/.opencode/skills/recipe-init/SKILL.md`
— read it and follow it. This wrapper only sets context + policy.
**Context:** this is an **autonomic-recipe-maintainer (ARM)** skill. It operates on the
recipe-maintainer **cctest** test server / local abra sandbox — NOT on the cc-ci CI server or
its shared swarm. Execute with the submodule as your working directory:
`cd /srv/cc-ci-orch/vendor/autonomic-recipe-maintainer`. If the ARM environment is not yet
configured on this host (`settings.toml` from `settings.toml.example`, sandbox/test instances),
run `/cctest-intro` / `/cctest-setup-sandbox` first.
**Policy overrides (cc-ci-orchestrator conventions win):**
- Anything that would **merge a recipe PR or push a recipe main without review** requires
explicit operator opt-in per run — the cc-ci standing rule is recipe upgrade PRs are
operator-merged, and ARM skills that say otherwise (e.g. full-auto upgrade flows) do NOT
inherit blanket authorization here.
- Never touch cc-ci infrastructure (the CI server, its swarm, `/root/*` clones, the weekly
timers) from an ARM skill — cc-ci work goes through the cc-ci skills.
- The submodule is **pinned**: don't commit into it from here; upstream ARM changes arrive via
a deliberate submodule bump + `scripts/gen-cctest-skills.py` regeneration.
@@ -0,0 +1,26 @@
---
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 (cctest wrapper)
**Canonical procedure:** `vendor/autonomic-recipe-maintainer/.opencode/skills/recipe-logging/SKILL.md`
— read it and follow it. This wrapper only sets context + policy.
**Context:** this is an **autonomic-recipe-maintainer (ARM)** skill. It operates on the
recipe-maintainer **cctest** test server / local abra sandbox — NOT on the cc-ci CI server or
its shared swarm. Execute with the submodule as your working directory:
`cd /srv/cc-ci-orch/vendor/autonomic-recipe-maintainer`. If the ARM environment is not yet
configured on this host (`settings.toml` from `settings.toml.example`, sandbox/test instances),
run `/cctest-intro` / `/cctest-setup-sandbox` first.
**Policy overrides (cc-ci-orchestrator conventions win):**
- Anything that would **merge a recipe PR or push a recipe main without review** requires
explicit operator opt-in per run — the cc-ci standing rule is recipe upgrade PRs are
operator-merged, and ARM skills that say otherwise (e.g. full-auto upgrade flows) do NOT
inherit blanket authorization here.
- Never touch cc-ci infrastructure (the CI server, its swarm, `/root/*` clones, the weekly
timers) from an ARM skill — cc-ci work goes through the cc-ci skills.
- The submodule is **pinned**: don't commit into it from here; upstream ARM changes arrive via
a deliberate submodule bump + `scripts/gen-cctest-skills.py` regeneration.
@@ -0,0 +1,26 @@
---
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 (cctest wrapper)
**Canonical procedure:** `vendor/autonomic-recipe-maintainer/.opencode/skills/recipe-new-tag/SKILL.md`
— read it and follow it. This wrapper only sets context + policy.
**Context:** this is an **autonomic-recipe-maintainer (ARM)** skill. It operates on the
recipe-maintainer **cctest** test server / local abra sandbox — NOT on the cc-ci CI server or
its shared swarm. Execute with the submodule as your working directory:
`cd /srv/cc-ci-orch/vendor/autonomic-recipe-maintainer`. If the ARM environment is not yet
configured on this host (`settings.toml` from `settings.toml.example`, sandbox/test instances),
run `/cctest-intro` / `/cctest-setup-sandbox` first.
**Policy overrides (cc-ci-orchestrator conventions win):**
- Anything that would **merge a recipe PR or push a recipe main without review** requires
explicit operator opt-in per run — the cc-ci standing rule is recipe upgrade PRs are
operator-merged, and ARM skills that say otherwise (e.g. full-auto upgrade flows) do NOT
inherit blanket authorization here.
- Never touch cc-ci infrastructure (the CI server, its swarm, `/root/*` clones, the weekly
timers) from an ARM skill — cc-ci work goes through the cc-ci skills.
- The submodule is **pinned**: don't commit into it from here; upstream ARM changes arrive via
a deliberate submodule bump + `scripts/gen-cctest-skills.py` regeneration.
@@ -0,0 +1,26 @@
---
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 (cctest wrapper)
**Canonical procedure:** `vendor/autonomic-recipe-maintainer/.opencode/skills/recipe-overview/SKILL.md`
— read it and follow it. This wrapper only sets context + policy.
**Context:** this is an **autonomic-recipe-maintainer (ARM)** skill. It operates on the
recipe-maintainer **cctest** test server / local abra sandbox — NOT on the cc-ci CI server or
its shared swarm. Execute with the submodule as your working directory:
`cd /srv/cc-ci-orch/vendor/autonomic-recipe-maintainer`. If the ARM environment is not yet
configured on this host (`settings.toml` from `settings.toml.example`, sandbox/test instances),
run `/cctest-intro` / `/cctest-setup-sandbox` first.
**Policy overrides (cc-ci-orchestrator conventions win):**
- Anything that would **merge a recipe PR or push a recipe main without review** requires
explicit operator opt-in per run — the cc-ci standing rule is recipe upgrade PRs are
operator-merged, and ARM skills that say otherwise (e.g. full-auto upgrade flows) do NOT
inherit blanket authorization here.
- Never touch cc-ci infrastructure (the CI server, its swarm, `/root/*` clones, the weekly
timers) from an ARM skill — cc-ci work goes through the cc-ci skills.
- The submodule is **pinned**: don't commit into it from here; upstream ARM changes arrive via
a deliberate submodule bump + `scripts/gen-cctest-skills.py` regeneration.
@@ -0,0 +1,26 @@
---
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 (cctest wrapper)
**Canonical procedure:** `vendor/autonomic-recipe-maintainer/.opencode/skills/recipe-review/SKILL.md`
— read it and follow it. This wrapper only sets context + policy.
**Context:** this is an **autonomic-recipe-maintainer (ARM)** skill. It operates on the
recipe-maintainer **cctest** test server / local abra sandbox — NOT on the cc-ci CI server or
its shared swarm. Execute with the submodule as your working directory:
`cd /srv/cc-ci-orch/vendor/autonomic-recipe-maintainer`. If the ARM environment is not yet
configured on this host (`settings.toml` from `settings.toml.example`, sandbox/test instances),
run `/cctest-intro` / `/cctest-setup-sandbox` first.
**Policy overrides (cc-ci-orchestrator conventions win):**
- Anything that would **merge a recipe PR or push a recipe main without review** requires
explicit operator opt-in per run — the cc-ci standing rule is recipe upgrade PRs are
operator-merged, and ARM skills that say otherwise (e.g. full-auto upgrade flows) do NOT
inherit blanket authorization here.
- Never touch cc-ci infrastructure (the CI server, its swarm, `/root/*` clones, the weekly
timers) from an ARM skill — cc-ci work goes through the cc-ci skills.
- The submodule is **pinned**: don't commit into it from here; upstream ARM changes arrive via
a deliberate submodule bump + `scripts/gen-cctest-skills.py` regeneration.
@@ -0,0 +1,26 @@
---
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 (cctest wrapper)
**Canonical procedure:** `vendor/autonomic-recipe-maintainer/.opencode/skills/recipe-test-all/SKILL.md`
— read it and follow it. This wrapper only sets context + policy.
**Context:** this is an **autonomic-recipe-maintainer (ARM)** skill. It operates on the
recipe-maintainer **cctest** test server / local abra sandbox — NOT on the cc-ci CI server or
its shared swarm. Execute with the submodule as your working directory:
`cd /srv/cc-ci-orch/vendor/autonomic-recipe-maintainer`. If the ARM environment is not yet
configured on this host (`settings.toml` from `settings.toml.example`, sandbox/test instances),
run `/cctest-intro` / `/cctest-setup-sandbox` first.
**Policy overrides (cc-ci-orchestrator conventions win):**
- Anything that would **merge a recipe PR or push a recipe main without review** requires
explicit operator opt-in per run — the cc-ci standing rule is recipe upgrade PRs are
operator-merged, and ARM skills that say otherwise (e.g. full-auto upgrade flows) do NOT
inherit blanket authorization here.
- Never touch cc-ci infrastructure (the CI server, its swarm, `/root/*` clones, the weekly
timers) from an ARM skill — cc-ci work goes through the cc-ci skills.
- The submodule is **pinned**: don't commit into it from here; upstream ARM changes arrive via
a deliberate submodule bump + `scripts/gen-cctest-skills.py` regeneration.
@@ -0,0 +1,26 @@
---
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 (cctest wrapper)
**Canonical procedure:** `vendor/autonomic-recipe-maintainer/.opencode/skills/recipe-test-backup/SKILL.md`
— read it and follow it. This wrapper only sets context + policy.
**Context:** this is an **autonomic-recipe-maintainer (ARM)** skill. It operates on the
recipe-maintainer **cctest** test server / local abra sandbox — NOT on the cc-ci CI server or
its shared swarm. Execute with the submodule as your working directory:
`cd /srv/cc-ci-orch/vendor/autonomic-recipe-maintainer`. If the ARM environment is not yet
configured on this host (`settings.toml` from `settings.toml.example`, sandbox/test instances),
run `/cctest-intro` / `/cctest-setup-sandbox` first.
**Policy overrides (cc-ci-orchestrator conventions win):**
- Anything that would **merge a recipe PR or push a recipe main without review** requires
explicit operator opt-in per run — the cc-ci standing rule is recipe upgrade PRs are
operator-merged, and ARM skills that say otherwise (e.g. full-auto upgrade flows) do NOT
inherit blanket authorization here.
- Never touch cc-ci infrastructure (the CI server, its swarm, `/root/*` clones, the weekly
timers) from an ARM skill — cc-ci work goes through the cc-ci skills.
- The submodule is **pinned**: don't commit into it from here; upstream ARM changes arrive via
a deliberate submodule bump + `scripts/gen-cctest-skills.py` regeneration.
@@ -0,0 +1,26 @@
---
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 (cctest wrapper)
**Canonical procedure:** `vendor/autonomic-recipe-maintainer/.opencode/skills/recipe-test-new/SKILL.md`
— read it and follow it. This wrapper only sets context + policy.
**Context:** this is an **autonomic-recipe-maintainer (ARM)** skill. It operates on the
recipe-maintainer **cctest** test server / local abra sandbox — NOT on the cc-ci CI server or
its shared swarm. Execute with the submodule as your working directory:
`cd /srv/cc-ci-orch/vendor/autonomic-recipe-maintainer`. If the ARM environment is not yet
configured on this host (`settings.toml` from `settings.toml.example`, sandbox/test instances),
run `/cctest-intro` / `/cctest-setup-sandbox` first.
**Policy overrides (cc-ci-orchestrator conventions win):**
- Anything that would **merge a recipe PR or push a recipe main without review** requires
explicit operator opt-in per run — the cc-ci standing rule is recipe upgrade PRs are
operator-merged, and ARM skills that say otherwise (e.g. full-auto upgrade flows) do NOT
inherit blanket authorization here.
- Never touch cc-ci infrastructure (the CI server, its swarm, `/root/*` clones, the weekly
timers) from an ARM skill — cc-ci work goes through the cc-ci skills.
- The submodule is **pinned**: don't commit into it from here; upstream ARM changes arrive via
a deliberate submodule bump + `scripts/gen-cctest-skills.py` regeneration.
@@ -0,0 +1,26 @@
---
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 (cctest wrapper)
**Canonical procedure:** `vendor/autonomic-recipe-maintainer/.opencode/skills/recipe-test-update/SKILL.md`
— read it and follow it. This wrapper only sets context + policy.
**Context:** this is an **autonomic-recipe-maintainer (ARM)** skill. It operates on the
recipe-maintainer **cctest** test server / local abra sandbox — NOT on the cc-ci CI server or
its shared swarm. Execute with the submodule as your working directory:
`cd /srv/cc-ci-orch/vendor/autonomic-recipe-maintainer`. If the ARM environment is not yet
configured on this host (`settings.toml` from `settings.toml.example`, sandbox/test instances),
run `/cctest-intro` / `/cctest-setup-sandbox` first.
**Policy overrides (cc-ci-orchestrator conventions win):**
- Anything that would **merge a recipe PR or push a recipe main without review** requires
explicit operator opt-in per run — the cc-ci standing rule is recipe upgrade PRs are
operator-merged, and ARM skills that say otherwise (e.g. full-auto upgrade flows) do NOT
inherit blanket authorization here.
- Never touch cc-ci infrastructure (the CI server, its swarm, `/root/*` clones, the weekly
timers) from an ARM skill — cc-ci work goes through the cc-ci skills.
- The submodule is **pinned**: don't commit into it from here; upstream ARM changes arrive via
a deliberate submodule bump + `scripts/gen-cctest-skills.py` regeneration.
@@ -0,0 +1,26 @@
---
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 (cctest wrapper)
**Canonical procedure:** `vendor/autonomic-recipe-maintainer/.opencode/skills/recipe-test/SKILL.md`
— read it and follow it. This wrapper only sets context + policy.
**Context:** this is an **autonomic-recipe-maintainer (ARM)** skill. It operates on the
recipe-maintainer **cctest** test server / local abra sandbox — NOT on the cc-ci CI server or
its shared swarm. Execute with the submodule as your working directory:
`cd /srv/cc-ci-orch/vendor/autonomic-recipe-maintainer`. If the ARM environment is not yet
configured on this host (`settings.toml` from `settings.toml.example`, sandbox/test instances),
run `/cctest-intro` / `/cctest-setup-sandbox` first.
**Policy overrides (cc-ci-orchestrator conventions win):**
- Anything that would **merge a recipe PR or push a recipe main without review** requires
explicit operator opt-in per run — the cc-ci standing rule is recipe upgrade PRs are
operator-merged, and ARM skills that say otherwise (e.g. full-auto upgrade flows) do NOT
inherit blanket authorization here.
- Never touch cc-ci infrastructure (the CI server, its swarm, `/root/*` clones, the weekly
timers) from an ARM skill — cc-ci work goes through the cc-ci skills.
- The submodule is **pinned**: don't commit into it from here; upstream ARM changes arrive via
a deliberate submodule bump + `scripts/gen-cctest-skills.py` regeneration.
@@ -0,0 +1,26 @@
---
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 (cctest wrapper)
**Canonical procedure:** `vendor/autonomic-recipe-maintainer/.opencode/skills/recipe-upgrade-apply/SKILL.md`
— read it and follow it. This wrapper only sets context + policy.
**Context:** this is an **autonomic-recipe-maintainer (ARM)** skill. It operates on the
recipe-maintainer **cctest** test server / local abra sandbox — NOT on the cc-ci CI server or
its shared swarm. Execute with the submodule as your working directory:
`cd /srv/cc-ci-orch/vendor/autonomic-recipe-maintainer`. If the ARM environment is not yet
configured on this host (`settings.toml` from `settings.toml.example`, sandbox/test instances),
run `/cctest-intro` / `/cctest-setup-sandbox` first.
**Policy overrides (cc-ci-orchestrator conventions win):**
- Anything that would **merge a recipe PR or push a recipe main without review** requires
explicit operator opt-in per run — the cc-ci standing rule is recipe upgrade PRs are
operator-merged, and ARM skills that say otherwise (e.g. full-auto upgrade flows) do NOT
inherit blanket authorization here.
- Never touch cc-ci infrastructure (the CI server, its swarm, `/root/*` clones, the weekly
timers) from an ARM skill — cc-ci work goes through the cc-ci skills.
- The submodule is **pinned**: don't commit into it from here; upstream ARM changes arrive via
a deliberate submodule bump + `scripts/gen-cctest-skills.py` regeneration.
@@ -0,0 +1,26 @@
---
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 (cctest wrapper)
**Canonical procedure:** `vendor/autonomic-recipe-maintainer/.opencode/skills/recipe-upgrade-cron-all/SKILL.md`
— read it and follow it. This wrapper only sets context + policy.
**Context:** this is an **autonomic-recipe-maintainer (ARM)** skill. It operates on the
recipe-maintainer **cctest** test server / local abra sandbox — NOT on the cc-ci CI server or
its shared swarm. Execute with the submodule as your working directory:
`cd /srv/cc-ci-orch/vendor/autonomic-recipe-maintainer`. If the ARM environment is not yet
configured on this host (`settings.toml` from `settings.toml.example`, sandbox/test instances),
run `/cctest-intro` / `/cctest-setup-sandbox` first.
**Policy overrides (cc-ci-orchestrator conventions win):**
- Anything that would **merge a recipe PR or push a recipe main without review** requires
explicit operator opt-in per run — the cc-ci standing rule is recipe upgrade PRs are
operator-merged, and ARM skills that say otherwise (e.g. full-auto upgrade flows) do NOT
inherit blanket authorization here.
- Never touch cc-ci infrastructure (the CI server, its swarm, `/root/*` clones, the weekly
timers) from an ARM skill — cc-ci work goes through the cc-ci skills.
- The submodule is **pinned**: don't commit into it from here; upstream ARM changes arrive via
a deliberate submodule bump + `scripts/gen-cctest-skills.py` regeneration.
@@ -0,0 +1,26 @@
---
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 (cctest wrapper)
**Canonical procedure:** `vendor/autonomic-recipe-maintainer/.opencode/skills/recipe-upgrade-full/SKILL.md`
— read it and follow it. This wrapper only sets context + policy.
**Context:** this is an **autonomic-recipe-maintainer (ARM)** skill. It operates on the
recipe-maintainer **cctest** test server / local abra sandbox — NOT on the cc-ci CI server or
its shared swarm. Execute with the submodule as your working directory:
`cd /srv/cc-ci-orch/vendor/autonomic-recipe-maintainer`. If the ARM environment is not yet
configured on this host (`settings.toml` from `settings.toml.example`, sandbox/test instances),
run `/cctest-intro` / `/cctest-setup-sandbox` first.
**Policy overrides (cc-ci-orchestrator conventions win):**
- Anything that would **merge a recipe PR or push a recipe main without review** requires
explicit operator opt-in per run — the cc-ci standing rule is recipe upgrade PRs are
operator-merged, and ARM skills that say otherwise (e.g. full-auto upgrade flows) do NOT
inherit blanket authorization here.
- Never touch cc-ci infrastructure (the CI server, its swarm, `/root/*` clones, the weekly
timers) from an ARM skill — cc-ci work goes through the cc-ci skills.
- The submodule is **pinned**: don't commit into it from here; upstream ARM changes arrive via
a deliberate submodule bump + `scripts/gen-cctest-skills.py` regeneration.
@@ -0,0 +1,26 @@
---
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 (cctest wrapper)
**Canonical procedure:** `vendor/autonomic-recipe-maintainer/.opencode/skills/recipe-upgrade-plan/SKILL.md`
— read it and follow it. This wrapper only sets context + policy.
**Context:** this is an **autonomic-recipe-maintainer (ARM)** skill. It operates on the
recipe-maintainer **cctest** test server / local abra sandbox — NOT on the cc-ci CI server or
its shared swarm. Execute with the submodule as your working directory:
`cd /srv/cc-ci-orch/vendor/autonomic-recipe-maintainer`. If the ARM environment is not yet
configured on this host (`settings.toml` from `settings.toml.example`, sandbox/test instances),
run `/cctest-intro` / `/cctest-setup-sandbox` first.
**Policy overrides (cc-ci-orchestrator conventions win):**
- Anything that would **merge a recipe PR or push a recipe main without review** requires
explicit operator opt-in per run — the cc-ci standing rule is recipe upgrade PRs are
operator-merged, and ARM skills that say otherwise (e.g. full-auto upgrade flows) do NOT
inherit blanket authorization here.
- Never touch cc-ci infrastructure (the CI server, its swarm, `/root/*` clones, the weekly
timers) from an ARM skill — cc-ci work goes through the cc-ci skills.
- The submodule is **pinned**: don't commit into it from here; upstream ARM changes arrive via
a deliberate submodule bump + `scripts/gen-cctest-skills.py` regeneration.
@@ -0,0 +1,26 @@
---
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 (cctest wrapper)
**Canonical procedure:** `vendor/autonomic-recipe-maintainer/.opencode/skills/recipe-upstream/SKILL.md`
— read it and follow it. This wrapper only sets context + policy.
**Context:** this is an **autonomic-recipe-maintainer (ARM)** skill. It operates on the
recipe-maintainer **cctest** test server / local abra sandbox — NOT on the cc-ci CI server or
its shared swarm. Execute with the submodule as your working directory:
`cd /srv/cc-ci-orch/vendor/autonomic-recipe-maintainer`. If the ARM environment is not yet
configured on this host (`settings.toml` from `settings.toml.example`, sandbox/test instances),
run `/cctest-intro` / `/cctest-setup-sandbox` first.
**Policy overrides (cc-ci-orchestrator conventions win):**
- Anything that would **merge a recipe PR or push a recipe main without review** requires
explicit operator opt-in per run — the cc-ci standing rule is recipe upgrade PRs are
operator-merged, and ARM skills that say otherwise (e.g. full-auto upgrade flows) do NOT
inherit blanket authorization here.
- Never touch cc-ci infrastructure (the CI server, its swarm, `/root/*` clones, the weekly
timers) from an ARM skill — cc-ci work goes through the cc-ci skills.
- The submodule is **pinned**: don't commit into it from here; upstream ARM changes arrive via
a deliberate submodule bump + `scripts/gen-cctest-skills.py` regeneration.
@@ -0,0 +1,26 @@
---
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 (cctest wrapper)
**Canonical procedure:** `vendor/autonomic-recipe-maintainer/.opencode/skills/setup-sandbox/SKILL.md`
— read it and follow it. This wrapper only sets context + policy.
**Context:** this is an **autonomic-recipe-maintainer (ARM)** skill. It operates on the
recipe-maintainer **cctest** test server / local abra sandbox — NOT on the cc-ci CI server or
its shared swarm. Execute with the submodule as your working directory:
`cd /srv/cc-ci-orch/vendor/autonomic-recipe-maintainer`. If the ARM environment is not yet
configured on this host (`settings.toml` from `settings.toml.example`, sandbox/test instances),
run `/cctest-intro` / `/cctest-setup-sandbox` first.
**Policy overrides (cc-ci-orchestrator conventions win):**
- Anything that would **merge a recipe PR or push a recipe main without review** requires
explicit operator opt-in per run — the cc-ci standing rule is recipe upgrade PRs are
operator-merged, and ARM skills that say otherwise (e.g. full-auto upgrade flows) do NOT
inherit blanket authorization here.
- Never touch cc-ci infrastructure (the CI server, its swarm, `/root/*` clones, the weekly
timers) from an ARM skill — cc-ci work goes through the cc-ci skills.
- The submodule is **pinned**: don't commit into it from here; upstream ARM changes arrive via
a deliberate submodule bump + `scripts/gen-cctest-skills.py` regeneration.
@@ -0,0 +1,26 @@
---
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 (cctest wrapper)
**Canonical procedure:** `vendor/autonomic-recipe-maintainer/.opencode/skills/switch-default-instance/SKILL.md`
— read it and follow it. This wrapper only sets context + policy.
**Context:** this is an **autonomic-recipe-maintainer (ARM)** skill. It operates on the
recipe-maintainer **cctest** test server / local abra sandbox — NOT on the cc-ci CI server or
its shared swarm. Execute with the submodule as your working directory:
`cd /srv/cc-ci-orch/vendor/autonomic-recipe-maintainer`. If the ARM environment is not yet
configured on this host (`settings.toml` from `settings.toml.example`, sandbox/test instances),
run `/cctest-intro` / `/cctest-setup-sandbox` first.
**Policy overrides (cc-ci-orchestrator conventions win):**
- Anything that would **merge a recipe PR or push a recipe main without review** requires
explicit operator opt-in per run — the cc-ci standing rule is recipe upgrade PRs are
operator-merged, and ARM skills that say otherwise (e.g. full-auto upgrade flows) do NOT
inherit blanket authorization here.
- Never touch cc-ci infrastructure (the CI server, its swarm, `/root/*` clones, the weekly
timers) from an ARM skill — cc-ci work goes through the cc-ci skills.
- The submodule is **pinned**: don't commit into it from here; upstream ARM changes arrive via
a deliberate submodule bump + `scripts/gen-cctest-skills.py` regeneration.
@@ -0,0 +1,26 @@
---
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 (cctest wrapper)
**Canonical procedure:** `vendor/autonomic-recipe-maintainer/.opencode/skills/sync-secrets/SKILL.md`
— read it and follow it. This wrapper only sets context + policy.
**Context:** this is an **autonomic-recipe-maintainer (ARM)** skill. It operates on the
recipe-maintainer **cctest** test server / local abra sandbox — NOT on the cc-ci CI server or
its shared swarm. Execute with the submodule as your working directory:
`cd /srv/cc-ci-orch/vendor/autonomic-recipe-maintainer`. If the ARM environment is not yet
configured on this host (`settings.toml` from `settings.toml.example`, sandbox/test instances),
run `/cctest-intro` / `/cctest-setup-sandbox` first.
**Policy overrides (cc-ci-orchestrator conventions win):**
- Anything that would **merge a recipe PR or push a recipe main without review** requires
explicit operator opt-in per run — the cc-ci standing rule is recipe upgrade PRs are
operator-merged, and ARM skills that say otherwise (e.g. full-auto upgrade flows) do NOT
inherit blanket authorization here.
- Never touch cc-ci infrastructure (the CI server, its swarm, `/root/*` clones, the weekly
timers) from an ARM skill — cc-ci work goes through the cc-ci skills.
- The submodule is **pinned**: don't commit into it from here; upstream ARM changes arrive via
a deliberate submodule bump + `scripts/gen-cctest-skills.py` regeneration.
@@ -0,0 +1,26 @@
---
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 (cctest wrapper)
**Canonical procedure:** `vendor/autonomic-recipe-maintainer/.opencode/skills/t1cc-start/SKILL.md`
— read it and follow it. This wrapper only sets context + policy.
**Context:** this is an **autonomic-recipe-maintainer (ARM)** skill. It operates on the
recipe-maintainer **cctest** test server / local abra sandbox — NOT on the cc-ci CI server or
its shared swarm. Execute with the submodule as your working directory:
`cd /srv/cc-ci-orch/vendor/autonomic-recipe-maintainer`. If the ARM environment is not yet
configured on this host (`settings.toml` from `settings.toml.example`, sandbox/test instances),
run `/cctest-intro` / `/cctest-setup-sandbox` first.
**Policy overrides (cc-ci-orchestrator conventions win):**
- Anything that would **merge a recipe PR or push a recipe main without review** requires
explicit operator opt-in per run — the cc-ci standing rule is recipe upgrade PRs are
operator-merged, and ARM skills that say otherwise (e.g. full-auto upgrade flows) do NOT
inherit blanket authorization here.
- Never touch cc-ci infrastructure (the CI server, its swarm, `/root/*` clones, the weekly
timers) from an ARM skill — cc-ci work goes through the cc-ci skills.
- The submodule is **pinned**: don't commit into it from here; upstream ARM changes arrive via
a deliberate submodule bump + `scripts/gen-cctest-skills.py` regeneration.
@@ -0,0 +1,26 @@
---
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 (cctest wrapper)
**Canonical procedure:** `vendor/autonomic-recipe-maintainer/.opencode/skills/t1cc-stop/SKILL.md`
— read it and follow it. This wrapper only sets context + policy.
**Context:** this is an **autonomic-recipe-maintainer (ARM)** skill. It operates on the
recipe-maintainer **cctest** test server / local abra sandbox — NOT on the cc-ci CI server or
its shared swarm. Execute with the submodule as your working directory:
`cd /srv/cc-ci-orch/vendor/autonomic-recipe-maintainer`. If the ARM environment is not yet
configured on this host (`settings.toml` from `settings.toml.example`, sandbox/test instances),
run `/cctest-intro` / `/cctest-setup-sandbox` first.
**Policy overrides (cc-ci-orchestrator conventions win):**
- Anything that would **merge a recipe PR or push a recipe main without review** requires
explicit operator opt-in per run — the cc-ci standing rule is recipe upgrade PRs are
operator-merged, and ARM skills that say otherwise (e.g. full-auto upgrade flows) do NOT
inherit blanket authorization here.
- Never touch cc-ci infrastructure (the CI server, its swarm, `/root/*` clones, the weekly
timers) from an ARM skill — cc-ci work goes through the cc-ci skills.
- The submodule is **pinned**: don't commit into it from here; upstream ARM changes arrive via
a deliberate submodule bump + `scripts/gen-cctest-skills.py` regeneration.
@@ -0,0 +1,26 @@
---
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 (cctest wrapper)
**Canonical procedure:** `vendor/autonomic-recipe-maintainer/.opencode/skills/test-context-reset/SKILL.md`
— read it and follow it. This wrapper only sets context + policy.
**Context:** this is an **autonomic-recipe-maintainer (ARM)** skill. It operates on the
recipe-maintainer **cctest** test server / local abra sandbox — NOT on the cc-ci CI server or
its shared swarm. Execute with the submodule as your working directory:
`cd /srv/cc-ci-orch/vendor/autonomic-recipe-maintainer`. If the ARM environment is not yet
configured on this host (`settings.toml` from `settings.toml.example`, sandbox/test instances),
run `/cctest-intro` / `/cctest-setup-sandbox` first.
**Policy overrides (cc-ci-orchestrator conventions win):**
- Anything that would **merge a recipe PR or push a recipe main without review** requires
explicit operator opt-in per run — the cc-ci standing rule is recipe upgrade PRs are
operator-merged, and ARM skills that say otherwise (e.g. full-auto upgrade flows) do NOT
inherit blanket authorization here.
- Never touch cc-ci infrastructure (the CI server, its swarm, `/root/*` clones, the weekly
timers) from an ARM skill — cc-ci work goes through the cc-ci skills.
- The submodule is **pinned**: don't commit into it from here; upstream ARM changes arrive via
a deliberate submodule bump + `scripts/gen-cctest-skills.py` regeneration.
@@ -0,0 +1,26 @@
---
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 (cctest wrapper)
**Canonical procedure:** `vendor/autonomic-recipe-maintainer/.opencode/skills/test-setup/SKILL.md`
— read it and follow it. This wrapper only sets context + policy.
**Context:** this is an **autonomic-recipe-maintainer (ARM)** skill. It operates on the
recipe-maintainer **cctest** test server / local abra sandbox — NOT on the cc-ci CI server or
its shared swarm. Execute with the submodule as your working directory:
`cd /srv/cc-ci-orch/vendor/autonomic-recipe-maintainer`. If the ARM environment is not yet
configured on this host (`settings.toml` from `settings.toml.example`, sandbox/test instances),
run `/cctest-intro` / `/cctest-setup-sandbox` first.
**Policy overrides (cc-ci-orchestrator conventions win):**
- Anything that would **merge a recipe PR or push a recipe main without review** requires
explicit operator opt-in per run — the cc-ci standing rule is recipe upgrade PRs are
operator-merged, and ARM skills that say otherwise (e.g. full-auto upgrade flows) do NOT
inherit blanket authorization here.
- Never touch cc-ci infrastructure (the CI server, its swarm, `/root/*` clones, the weekly
timers) from an ARM skill — cc-ci work goes through the cc-ci skills.
- The submodule is **pinned**: don't commit into it from here; upstream ARM changes arrive via
a deliberate submodule bump + `scripts/gen-cctest-skills.py` regeneration.
+15
View File
@@ -52,6 +52,19 @@ Then present the roster grouped as follows, and close with the situation guide.
- **hetzner-server-recovery** — when a Hetzner host is unreachable over SSH/tailscale: API
reboot, rescue mode, GRUB generation selection (submenu ids are `1>N`), console access.
**Recipe-maintainer toolkit (`/cctest-*` — the ARM sandbox + cctest test server, NOT cc-ci)**
The full autonomic-recipe-maintainer skill set, vendored as a pinned submodule
(`vendor/autonomic-recipe-maintainer`) and exposed with the `cctest-` prefix — ~30 skills for
hands-on recipe work against the recipe-maintainer **cctest** test server and local abra
sandbox: `/cctest-intro` (start here), `/cctest-recipe-overview`, `/cctest-recipe-init`,
`/cctest-recipe-deploy`, `/cctest-recipe-test*`, `/cctest-recipe-upgrade-plan|apply|full`,
`/cctest-new-recipe-guide`, sandbox/instance management (`/cctest-setup-sandbox`,
`/cctest-t1cc-start|stop`), and more — enumerate with `ls .opencode/skills | grep ^cctest-`.
**Rule of thumb:** verifying/shipping against the CI pipeline → the cc-ci skills above;
exploratory or hands-on recipe development on a test instance → `/cctest-*`. cc-ci policy
overrides apply (auto-merge-style ARM flows need per-run operator opt-in; never touch cc-ci
infra from an ARM skill). After a submodule bump run `scripts/gen-cctest-skills.py`.
## "What do you want to do?"
| Situation | Do this |
@@ -66,6 +79,8 @@ Then present the roster grouped as follows, and close with the situation guide.
| "Update this orchestrator's OS/deps" | `/cc-ci-orchestrator-update` |
| "Add <recipe> to what we maintain" | `/recipe-enroll <recipe>` |
| "A host is unreachable" | `hetzner-server-recovery` |
| "Hack on / bootstrap a recipe in a sandbox" | `/cctest-recipe-init`, `/cctest-recipe-deploy`, `/cctest-recipe-test` |
| "New to recipe work, where do I start?" | `/cctest-intro` |
| "What needs my review?" | `/cc-ci-status` → its open-PR section lists CVE-urgent + ready-to-merge PRs |
**Standing conventions** (all skills follow these): PRs are opened for visibility and merged