refactor(cli)!: rename all skills and agents to consistent ce- prefix (#503)
Some checks failed
CI / pr-title (push) Has been cancelled
CI / test (push) Has been cancelled
Release PR / release-pr (push) Has been cancelled
Release PR / publish-cli (push) Has been cancelled

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Trevin Chow
2026-04-18 15:44:22 -07:00
committed by GitHub
parent 49249d7317
commit 5c0ec9137a
233 changed files with 3199 additions and 936 deletions

View File

@@ -7,15 +7,15 @@ async function readRepoFile(relativePath: string): Promise<string> {
return readFile(path.join(process.cwd(), relativePath), "utf8")
}
describe("ce-review contract", () => {
describe("ce-code-review contract", () => {
test("documents explicit modes and orchestration boundaries", async () => {
const content = await readRepoFile("plugins/compound-engineering/skills/ce-review/SKILL.md")
const content = await readRepoFile("plugins/compound-engineering/skills/ce-code-review/SKILL.md")
expect(content).toContain("## Mode Detection")
expect(content).toContain("mode:autofix")
expect(content).toContain("mode:report-only")
expect(content).toContain("mode:headless")
expect(content).toContain(".context/compound-engineering/ce-review/<run-id>/")
expect(content).toContain(".context/compound-engineering/ce-code-review/<run-id>/")
expect(content).toContain("Do not create residual todos or `.context` artifacts.")
expect(content).toContain(
"Do not start a mutating review round concurrently with browser testing on the same checkout.",
@@ -27,7 +27,7 @@ describe("ce-review contract", () => {
})
test("documents headless mode contract for programmatic callers", async () => {
const content = await readRepoFile("plugins/compound-engineering/skills/ce-review/SKILL.md")
const content = await readRepoFile("plugins/compound-engineering/skills/ce-code-review/SKILL.md")
// Headless mode has its own rules section
expect(content).toContain("### Headless mode rules")
@@ -70,7 +70,7 @@ describe("ce-review contract", () => {
})
test("documents policy-driven routing and residual handoff", async () => {
const content = await readRepoFile("plugins/compound-engineering/skills/ce-review/SKILL.md")
const content = await readRepoFile("plugins/compound-engineering/skills/ce-code-review/SKILL.md")
// Routing taxonomy and fixer queue semantics
expect(content).toContain("## Action Routing")
@@ -108,7 +108,7 @@ describe("ce-review contract", () => {
// Tracker fallback chain explicitly forbids extending the internal todos system.
const trackerDefer = await readRepoFile(
"plugins/compound-engineering/skills/ce-review/references/tracker-defer.md",
"plugins/compound-engineering/skills/ce-code-review/references/tracker-defer.md",
)
expect(trackerDefer).toContain(".context/compound-engineering/todos/")
expect(trackerDefer).toMatch(/Never fall back to `\.context\/compound-engineering\/todos\//)
@@ -117,7 +117,7 @@ describe("ce-review contract", () => {
// rejected synthesis-time rewrite pass. Assert presence of the observable-behavior
// rule and the required-field reminder without pinning exact prose.
const subagentTemplate = await readRepoFile(
"plugins/compound-engineering/skills/ce-review/references/subagent-template.md",
"plugins/compound-engineering/skills/ce-code-review/references/subagent-template.md",
)
expect(subagentTemplate).toMatch(/observable behavior/i)
expect(subagentTemplate).toMatch(/required/i)
@@ -127,7 +127,7 @@ describe("ce-review contract", () => {
// breaks the test. Exact label wording may be refined for clarity — these assertions
// check the structural contract, not the prose.
const walkthrough = await readRepoFile(
"plugins/compound-engineering/skills/ce-review/references/walkthrough.md",
"plugins/compound-engineering/skills/ce-code-review/references/walkthrough.md",
)
expect(walkthrough).toContain("Apply the proposed fix")
expect(walkthrough).toContain("Defer — file a [TRACKER] ticket")
@@ -136,7 +136,7 @@ describe("ce-review contract", () => {
// bulk-preview.md contract: exactly Proceed / Cancel, no third option.
const bulkPreview = await readRepoFile(
"plugins/compound-engineering/skills/ce-review/references/bulk-preview.md",
"plugins/compound-engineering/skills/ce-code-review/references/bulk-preview.md",
)
expect(bulkPreview).toContain("Proceed")
expect(bulkPreview).toContain("Cancel")
@@ -153,7 +153,7 @@ describe("ce-review contract", () => {
test("keeps findings schema and downstream docs aligned", async () => {
const rawSchema = await readRepoFile(
"plugins/compound-engineering/skills/ce-review/references/findings-schema.json",
"plugins/compound-engineering/skills/ce-code-review/references/findings-schema.json",
)
const schema = JSON.parse(rawSchema) as {
_meta: { confidence_thresholds: { suppress: string } }
@@ -189,27 +189,27 @@ describe("ce-review contract", () => {
expect(schema.properties.findings.items.properties.requires_verification.type).toBe("boolean")
expect(schema._meta.confidence_thresholds.suppress).toContain("0.60")
const fileTodos = await readRepoFile("plugins/compound-engineering/skills/todo-create/SKILL.md")
expect(fileTodos).toContain("/ce:review mode:autofix")
expect(fileTodos).toContain("/todo-resolve")
const fileTodos = await readRepoFile("plugins/compound-engineering/skills/ce-todo-create/SKILL.md")
expect(fileTodos).toContain("/ce-code-review mode:autofix")
expect(fileTodos).toContain("/ce-todo-resolve")
const resolveTodos = await readRepoFile("plugins/compound-engineering/skills/todo-resolve/SKILL.md")
expect(resolveTodos).toContain("ce:review mode:autofix")
const resolveTodos = await readRepoFile("plugins/compound-engineering/skills/ce-todo-resolve/SKILL.md")
expect(resolveTodos).toContain("ce-code-review mode:autofix")
expect(resolveTodos).toContain("safe_auto")
})
test("documents stack-specific conditional reviewers for the JSON pipeline", async () => {
const content = await readRepoFile("plugins/compound-engineering/skills/ce-review/SKILL.md")
const content = await readRepoFile("plugins/compound-engineering/skills/ce-code-review/SKILL.md")
const catalog = await readRepoFile(
"plugins/compound-engineering/skills/ce-review/references/persona-catalog.md",
"plugins/compound-engineering/skills/ce-code-review/references/persona-catalog.md",
)
for (const agent of [
"compound-engineering:review:dhh-rails-reviewer",
"compound-engineering:review:kieran-rails-reviewer",
"compound-engineering:review:kieran-python-reviewer",
"compound-engineering:review:kieran-typescript-reviewer",
"compound-engineering:review:julik-frontend-races-reviewer",
"review:ce-dhh-rails-reviewer",
"review:ce-kieran-rails-reviewer",
"review:ce-kieran-python-reviewer",
"review:ce-kieran-typescript-reviewer",
"review:ce-julik-frontend-races-reviewer",
]) {
expect(content).toContain(agent)
expect(catalog).toContain(agent)
@@ -222,23 +222,23 @@ describe("ce-review contract", () => {
test("stack-specific reviewer agents follow the structured findings contract", async () => {
const reviewers = [
{
path: "plugins/compound-engineering/agents/review/dhh-rails-reviewer.md",
path: "plugins/compound-engineering/agents/review/ce-dhh-rails-reviewer.agent.md",
reviewer: "dhh-rails",
},
{
path: "plugins/compound-engineering/agents/review/kieran-rails-reviewer.md",
path: "plugins/compound-engineering/agents/review/ce-kieran-rails-reviewer.agent.md",
reviewer: "kieran-rails",
},
{
path: "plugins/compound-engineering/agents/review/kieran-python-reviewer.md",
path: "plugins/compound-engineering/agents/review/ce-kieran-python-reviewer.agent.md",
reviewer: "kieran-python",
},
{
path: "plugins/compound-engineering/agents/review/kieran-typescript-reviewer.md",
path: "plugins/compound-engineering/agents/review/ce-kieran-typescript-reviewer.agent.md",
reviewer: "kieran-typescript",
},
{
path: "plugins/compound-engineering/agents/review/julik-frontend-races-reviewer.md",
path: "plugins/compound-engineering/agents/review/ce-julik-frontend-races-reviewer.agent.md",
reviewer: "julik-frontend-races",
},
]
@@ -262,7 +262,7 @@ describe("ce-review contract", () => {
test("leaves data-migration-expert as the unstructured review format", async () => {
const content = await readRepoFile(
"plugins/compound-engineering/agents/review/data-migration-expert.md",
"plugins/compound-engineering/agents/review/ce-data-migration-expert.agent.md",
)
expect(content).toContain("## Reviewer Checklist")
@@ -271,7 +271,7 @@ describe("ce-review contract", () => {
})
test("fails closed when merge-base is unresolved instead of falling back to git diff HEAD", async () => {
const content = await readRepoFile("plugins/compound-engineering/skills/ce-review/SKILL.md")
const content = await readRepoFile("plugins/compound-engineering/skills/ce-code-review/SKILL.md")
// No scope path should fall back to `git diff HEAD` or `git diff --cached` — those only
// show uncommitted changes and silently produce empty diffs on clean feature branches.
@@ -286,7 +286,7 @@ describe("ce-review contract", () => {
// The script itself emits ERROR: when the base is unresolved.
expect(content).toContain("references/resolve-base.sh")
const resolveScript = await readRepoFile(
"plugins/compound-engineering/skills/ce-review/references/resolve-base.sh",
"plugins/compound-engineering/skills/ce-code-review/references/resolve-base.sh",
)
expect(resolveScript).toContain("ERROR:")
@@ -298,14 +298,13 @@ describe("ce-review contract", () => {
test("orchestration callers pass explicit mode flags", async () => {
const lfg = await readRepoFile("plugins/compound-engineering/skills/lfg/SKILL.md")
expect(lfg).toContain("/ce:review mode:autofix")
expect(lfg).toContain("/ce-code-review mode:autofix")
})
})
describe("testing-reviewer contract", () => {
test("includes behavioral-changes-with-no-test-additions check", async () => {
const content = await readRepoFile("plugins/compound-engineering/agents/review/testing-reviewer.md")
const content = await readRepoFile("plugins/compound-engineering/agents/review/ce-testing-reviewer.agent.md")
// New check exists in "What you're hunting for" section
expect(content).toContain("Behavioral changes with no test additions")