continuous-improvement 3.8.0 → 3.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +2 -14
- package/CHANGELOG.md +25 -0
- package/LICENSE +21 -21
- package/QUICKSTART.md +148 -101
- package/README.md +50 -18
- package/action.yml +33 -33
- package/bin/analyze.sh +161 -161
- package/bin/backfill.mjs +19 -19
- package/bin/check-doc-runtime-claims.mjs +120 -0
- package/bin/generate-plugin-manifests.mjs +2 -0
- package/bin/hook-stats.mjs +21 -21
- package/bin/install.mjs +51 -44
- package/bin/mcp-server.mjs +43 -40
- package/bin/refresh-third-party.mjs +416 -416
- package/commands/continuous-improvement.md +115 -115
- package/commands/dashboard.md +56 -56
- package/commands/discipline.md +51 -51
- package/commands/proceed-with-the-recommendation.md +62 -62
- package/commands/seven-laws.md +16 -16
- package/commands/superpowers.md +119 -92
- package/commands/workspace-surface-audit.md +77 -77
- package/hooks/gateguard.mjs +172 -0
- package/hooks/observe.sh +172 -172
- package/hooks/session.sh +106 -106
- package/hooks/three-section-close.mjs +181 -181
- package/instinct-packs/go.json +58 -58
- package/instinct-packs/meta.json +16 -16
- package/instinct-packs/python.json +58 -58
- package/instinct-packs/react.json +58 -58
- package/lib/gateguard-state.mjs +85 -0
- package/lib/plugin-metadata.mjs +25 -18
- package/llms.txt +68 -68
- package/package.json +3 -2
- package/plugins/beginner.json +1 -1
- package/plugins/continuous-improvement/.claude-plugin/marketplace.json +1 -1
- package/plugins/continuous-improvement/.claude-plugin/plugin.json +1 -1
- package/plugins/continuous-improvement/LICENSE +21 -21
- package/plugins/continuous-improvement/README.md +1 -0
- package/plugins/continuous-improvement/agents/README.md +120 -0
- package/plugins/continuous-improvement/agents/code-reviewer.md +97 -0
- package/plugins/continuous-improvement/agents/security-auditor.md +101 -0
- package/plugins/continuous-improvement/agents/test-engineer.md +95 -0
- package/plugins/continuous-improvement/bin/backfill.mjs +19 -19
- package/plugins/continuous-improvement/bin/mcp-server.mjs +43 -40
- package/plugins/continuous-improvement/commands/continuous-improvement.md +115 -115
- package/plugins/continuous-improvement/commands/dashboard.md +56 -56
- package/plugins/continuous-improvement/commands/discipline.md +51 -51
- package/plugins/continuous-improvement/commands/proceed-with-the-recommendation.md +62 -62
- package/plugins/continuous-improvement/commands/seven-laws.md +16 -16
- package/plugins/continuous-improvement/commands/superpowers.md +119 -92
- package/plugins/continuous-improvement/commands/workspace-surface-audit.md +77 -77
- package/plugins/continuous-improvement/hooks/gateguard.mjs +172 -0
- package/plugins/continuous-improvement/hooks/hooks.json +6 -1
- package/plugins/continuous-improvement/hooks/observe.sh +172 -172
- package/plugins/continuous-improvement/hooks/session.sh +106 -106
- package/plugins/continuous-improvement/hooks/three-section-close.mjs +181 -181
- package/plugins/continuous-improvement/instinct-packs/go.json +58 -58
- package/plugins/continuous-improvement/instinct-packs/meta.json +16 -16
- package/plugins/continuous-improvement/instinct-packs/python.json +58 -58
- package/plugins/continuous-improvement/instinct-packs/react.json +58 -58
- package/plugins/continuous-improvement/lib/plugin-metadata.mjs +25 -18
- package/plugins/continuous-improvement/skills/README.md +4 -1
- package/plugins/continuous-improvement/skills/deploy-receipt/SKILL.md +47 -0
- package/plugins/continuous-improvement/skills/gateguard/SKILL.md +17 -9
- package/plugins/continuous-improvement/skills/para-memory-files/SKILL.md +108 -108
- package/plugins/continuous-improvement/skills/proceed-with-the-recommendation/SKILL.md +1 -8
- package/plugins/continuous-improvement/skills/ralph/SKILL.md +221 -221
- package/plugins/continuous-improvement/skills/recovery-classification/SKILL.md +73 -0
- package/plugins/continuous-improvement/skills/safety-guard/SKILL.md +76 -76
- package/plugins/continuous-improvement/skills/state-reconciliation/SKILL.md +63 -0
- package/plugins/continuous-improvement/skills/strategic-compact/SKILL.md +104 -104
- package/plugins/continuous-improvement/skills/superpowers/SKILL.md +22 -15
- package/plugins/continuous-improvement/skills/tdd-workflow/SKILL.md +411 -411
- package/plugins/continuous-improvement/skills/token-budget-advisor/SKILL.md +136 -136
- package/plugins/continuous-improvement/skills/verification-loop/SKILL.md +32 -0
- package/plugins/continuous-improvement/skills/wild-risa-balance/SKILL.md +191 -191
- package/plugins/continuous-improvement/skills/worktree-safety/SKILL.md +66 -0
- package/plugins/expert.json +1 -1
- package/skills/README.md +79 -79
- package/skills/deploy-receipt.md +47 -0
- package/skills/gateguard.md +17 -9
- package/skills/para-memory-files.md +108 -108
- package/skills/proceed-with-the-recommendation.md +1 -8
- package/skills/ralph.md +221 -221
- package/skills/recovery-classification.md +73 -0
- package/skills/safety-guard.md +76 -76
- package/skills/state-reconciliation.md +63 -0
- package/skills/strategic-compact.md +104 -104
- package/skills/superpowers.md +22 -15
- package/skills/tdd-workflow.md +411 -411
- package/skills/token-budget-advisor.md +136 -136
- package/skills/verification-loop.md +32 -0
- package/skills/wild-risa-balance.md +191 -191
- package/skills/worktree-safety.md +66 -0
- package/templates/insights-claude-md.md +91 -0
- package/templates/verify-ladder.example.json +37 -24
|
@@ -1,58 +1,58 @@
|
|
|
1
|
-
[
|
|
2
|
-
{
|
|
3
|
-
"id": "react-check-existing-components",
|
|
4
|
-
"trigger": "when creating a new React component",
|
|
5
|
-
"body": "Search the codebase for existing components that solve the same problem before creating new ones. Check shared/, components/, and ui/ directories.",
|
|
6
|
-
"confidence": 0.65,
|
|
7
|
-
"domain": "workflow"
|
|
8
|
-
},
|
|
9
|
-
{
|
|
10
|
-
"id": "react-prefer-server-components",
|
|
11
|
-
"trigger": "when creating components in Next.js App Router",
|
|
12
|
-
"body": "Default to Server Components. Only add 'use client' when the component needs useState, useEffect, event handlers, or browser APIs.",
|
|
13
|
-
"confidence": 0.7,
|
|
14
|
-
"domain": "patterns"
|
|
15
|
-
},
|
|
16
|
-
{
|
|
17
|
-
"id": "react-key-prop-lists",
|
|
18
|
-
"trigger": "when rendering lists with .map()",
|
|
19
|
-
"body": "Always use a stable, unique key prop. Never use array index as key unless the list is static and never reordered.",
|
|
20
|
-
"confidence": 0.7,
|
|
21
|
-
"domain": "patterns"
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
"id": "react-effect-cleanup",
|
|
25
|
-
"trigger": "when writing useEffect with subscriptions or timers",
|
|
26
|
-
"body": "Always return a cleanup function from useEffect when setting up subscriptions, event listeners, or timers to prevent memory leaks.",
|
|
27
|
-
"confidence": 0.7,
|
|
28
|
-
"domain": "patterns"
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
"id": "react-memo-expensive",
|
|
32
|
-
"trigger": "when a component re-renders with expensive calculations",
|
|
33
|
-
"body": "Use useMemo for expensive computations and React.memo for components that receive the same props frequently. Don't memo everything — only what's measurably slow.",
|
|
34
|
-
"confidence": 0.6,
|
|
35
|
-
"domain": "patterns"
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
"id": "react-form-validation",
|
|
39
|
-
"trigger": "when building forms",
|
|
40
|
-
"body": "Check if react-hook-form or zod is already in the project before building custom form validation. Prefer library solutions over hand-rolled validation.",
|
|
41
|
-
"confidence": 0.65,
|
|
42
|
-
"domain": "tooling"
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
"id": "react-error-boundary",
|
|
46
|
-
"trigger": "when adding a new page or route",
|
|
47
|
-
"body": "Ensure error boundaries exist around new pages/routes. In Next.js App Router, add error.tsx. In other React apps, wrap with ErrorBoundary component.",
|
|
48
|
-
"confidence": 0.6,
|
|
49
|
-
"domain": "patterns"
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
"id": "react-test-user-behavior",
|
|
53
|
-
"trigger": "when writing React component tests",
|
|
54
|
-
"body": "Test user behavior, not implementation details. Use @testing-library/react. Query by role, label, or text — not by class name or test ID.",
|
|
55
|
-
"confidence": 0.65,
|
|
56
|
-
"domain": "testing"
|
|
57
|
-
}
|
|
58
|
-
]
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"id": "react-check-existing-components",
|
|
4
|
+
"trigger": "when creating a new React component",
|
|
5
|
+
"body": "Search the codebase for existing components that solve the same problem before creating new ones. Check shared/, components/, and ui/ directories.",
|
|
6
|
+
"confidence": 0.65,
|
|
7
|
+
"domain": "workflow"
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"id": "react-prefer-server-components",
|
|
11
|
+
"trigger": "when creating components in Next.js App Router",
|
|
12
|
+
"body": "Default to Server Components. Only add 'use client' when the component needs useState, useEffect, event handlers, or browser APIs.",
|
|
13
|
+
"confidence": 0.7,
|
|
14
|
+
"domain": "patterns"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"id": "react-key-prop-lists",
|
|
18
|
+
"trigger": "when rendering lists with .map()",
|
|
19
|
+
"body": "Always use a stable, unique key prop. Never use array index as key unless the list is static and never reordered.",
|
|
20
|
+
"confidence": 0.7,
|
|
21
|
+
"domain": "patterns"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"id": "react-effect-cleanup",
|
|
25
|
+
"trigger": "when writing useEffect with subscriptions or timers",
|
|
26
|
+
"body": "Always return a cleanup function from useEffect when setting up subscriptions, event listeners, or timers to prevent memory leaks.",
|
|
27
|
+
"confidence": 0.7,
|
|
28
|
+
"domain": "patterns"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"id": "react-memo-expensive",
|
|
32
|
+
"trigger": "when a component re-renders with expensive calculations",
|
|
33
|
+
"body": "Use useMemo for expensive computations and React.memo for components that receive the same props frequently. Don't memo everything — only what's measurably slow.",
|
|
34
|
+
"confidence": 0.6,
|
|
35
|
+
"domain": "patterns"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"id": "react-form-validation",
|
|
39
|
+
"trigger": "when building forms",
|
|
40
|
+
"body": "Check if react-hook-form or zod is already in the project before building custom form validation. Prefer library solutions over hand-rolled validation.",
|
|
41
|
+
"confidence": 0.65,
|
|
42
|
+
"domain": "tooling"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"id": "react-error-boundary",
|
|
46
|
+
"trigger": "when adding a new page or route",
|
|
47
|
+
"body": "Ensure error boundaries exist around new pages/routes. In Next.js App Router, add error.tsx. In other React apps, wrap with ErrorBoundary component.",
|
|
48
|
+
"confidence": 0.6,
|
|
49
|
+
"domain": "patterns"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"id": "react-test-user-behavior",
|
|
53
|
+
"trigger": "when writing React component tests",
|
|
54
|
+
"body": "Test user behavior, not implementation details. Use @testing-library/react. Query by role, label, or text — not by class name or test ID.",
|
|
55
|
+
"confidence": 0.65,
|
|
56
|
+
"domain": "testing"
|
|
57
|
+
}
|
|
58
|
+
]
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gateguard per-session state.
|
|
3
|
+
*
|
|
4
|
+
* State file: <sessionDir>/gateguard-session.json. sessionDir resolves to
|
|
5
|
+
* GATEGUARD_SESSION_DIR (env override, used by tests) or
|
|
6
|
+
* ~/.claude/instincts/<projectHash>/ in production.
|
|
7
|
+
*
|
|
8
|
+
* V1 limitations (documented for honesty, not mitigated in code):
|
|
9
|
+
* - Honor system: clearance is granted whenever the agent sets
|
|
10
|
+
* `_gateguard_facts_presented: true` in tool_input or has a prior per-file
|
|
11
|
+
* marker. The hook cannot verify that real investigation occurred.
|
|
12
|
+
* - State-file deletion: rm'ing the state file resets every gate in the
|
|
13
|
+
* session. Defensible because the session itself is the trust boundary;
|
|
14
|
+
* the cap below limits cumulative damage.
|
|
15
|
+
* - Concurrency: two parallel hook invocations can race the read+write.
|
|
16
|
+
* Acceptable trade-off vs OS-specific atomic-rename complexity on Windows.
|
|
17
|
+
* - Cap: MAX_CLEARED_FILES caps the number of distinct files a single
|
|
18
|
+
* session can clear, bounding stuck-loop / rogue-agent damage.
|
|
19
|
+
*/
|
|
20
|
+
import { createHash } from "node:crypto";
|
|
21
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
22
|
+
import { execFileSync } from "node:child_process";
|
|
23
|
+
import { homedir } from "node:os";
|
|
24
|
+
import { join } from "node:path";
|
|
25
|
+
export const MAX_CLEARED_FILES = 50;
|
|
26
|
+
export function resolveSessionDir() {
|
|
27
|
+
const fromEnv = process.env.GATEGUARD_SESSION_DIR;
|
|
28
|
+
if (fromEnv)
|
|
29
|
+
return fromEnv;
|
|
30
|
+
const home = process.env.HOME || process.env.USERPROFILE || homedir();
|
|
31
|
+
const projectRoot = resolveProjectRoot();
|
|
32
|
+
const projectHash = createHash("sha256").update(projectRoot).digest("hex").slice(0, 12);
|
|
33
|
+
return join(home, ".claude", "instincts", projectHash);
|
|
34
|
+
}
|
|
35
|
+
function resolveProjectRoot() {
|
|
36
|
+
const fromEnv = process.env.CLAUDE_PROJECT_DIR;
|
|
37
|
+
if (fromEnv)
|
|
38
|
+
return fromEnv;
|
|
39
|
+
try {
|
|
40
|
+
const root = execFileSync("git", ["rev-parse", "--show-toplevel"], {
|
|
41
|
+
encoding: "utf8",
|
|
42
|
+
stdio: ["ignore", "pipe", "ignore"],
|
|
43
|
+
}).trim();
|
|
44
|
+
if (root)
|
|
45
|
+
return root;
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
// not in a git repo
|
|
49
|
+
}
|
|
50
|
+
return "global";
|
|
51
|
+
}
|
|
52
|
+
export function loadState(sessionDir) {
|
|
53
|
+
const path = join(sessionDir, "gateguard-session.json");
|
|
54
|
+
if (!existsSync(path)) {
|
|
55
|
+
return { created_at: new Date().toISOString(), cleared_files: {} };
|
|
56
|
+
}
|
|
57
|
+
try {
|
|
58
|
+
const raw = readFileSync(path, "utf8");
|
|
59
|
+
const parsed = JSON.parse(raw);
|
|
60
|
+
return {
|
|
61
|
+
created_at: parsed.created_at ?? new Date().toISOString(),
|
|
62
|
+
cleared_files: parsed.cleared_files ?? {},
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return { created_at: new Date().toISOString(), cleared_files: {} };
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
export function saveState(sessionDir, state) {
|
|
70
|
+
if (!existsSync(sessionDir))
|
|
71
|
+
mkdirSync(sessionDir, { recursive: true });
|
|
72
|
+
writeFileSync(join(sessionDir, "gateguard-session.json"), `${JSON.stringify(state, null, 2)}\n`);
|
|
73
|
+
}
|
|
74
|
+
export function isCapReached(state) {
|
|
75
|
+
return Object.keys(state.cleared_files).length >= MAX_CLEARED_FILES;
|
|
76
|
+
}
|
|
77
|
+
export function markFileCleared(state, filePath) {
|
|
78
|
+
return {
|
|
79
|
+
...state,
|
|
80
|
+
cleared_files: {
|
|
81
|
+
...state.cleared_files,
|
|
82
|
+
[filePath]: { cleared_at: new Date().toISOString() },
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
}
|
package/lib/plugin-metadata.mjs
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { dirname, join } from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
1
4
|
export const PACKAGE_NAME = "continuous-improvement";
|
|
2
|
-
|
|
5
|
+
const PKG_PATH = join(dirname(fileURLToPath(import.meta.url)), "..", "package.json");
|
|
6
|
+
export const VERSION = JSON.parse(readFileSync(PKG_PATH, "utf8")).version;
|
|
3
7
|
export const PLUGIN_MODES = ["beginner", "expert"];
|
|
4
8
|
const REPOSITORY_URL = "https://github.com/naimkatiman/continuous-improvement";
|
|
5
9
|
const HOMEPAGE_URL = `${REPOSITORY_URL}#readme`;
|
|
@@ -23,11 +27,17 @@ const KEYWORDS = [
|
|
|
23
27
|
];
|
|
24
28
|
const CLAUDE_PLUGIN_CATEGORY = "productivity";
|
|
25
29
|
const SHARED_PLUGIN_DESCRIPTION = "Stops Claude Code from skipping research, claiming 'done' without verifying, and repeating yesterday's mistakes. The 7 Laws of AI Agent Discipline — 13 enforcement skills, gating hooks, and the Mulahazah auto-leveling instinct engine.";
|
|
26
|
-
//
|
|
30
|
+
// Four vendored upstream companions registered alongside the CI plugin.
|
|
27
31
|
// Each entry points at a pinned-SHA snapshot under third-party/<name>/.
|
|
28
32
|
// See third-party/MANIFEST.md for refresh recipes and per-snapshot
|
|
29
33
|
// OUR_NOTES.md for integration scope and overlap matrices. The unified
|
|
30
|
-
// /superpowers dispatcher (skills/superpowers.md) routes across all
|
|
34
|
+
// /superpowers dispatcher (skills/superpowers.md) routes across all four.
|
|
35
|
+
// Product-management coverage is supplied by phuryn/pm-skills as an
|
|
36
|
+
// out-of-band marketplace install — see docs/THIRD_PARTY.md for the
|
|
37
|
+
// `claude plugin marketplace add phuryn/pm-skills` recipe and the eight
|
|
38
|
+
// installable plugins (pm-toolkit, pm-product-strategy, pm-product-discovery,
|
|
39
|
+
// pm-market-research, pm-data-analytics, pm-marketing-growth,
|
|
40
|
+
// pm-go-to-market, pm-execution).
|
|
31
41
|
const THIRD_PARTY_COMPANIONS = [
|
|
32
42
|
{
|
|
33
43
|
name: "superpowers",
|
|
@@ -75,18 +85,6 @@ const THIRD_PARTY_COMPANIONS = [
|
|
|
75
85
|
category: "orchestration",
|
|
76
86
|
homepage: "https://github.com/Yeachan-Heo/oh-my-claudecode",
|
|
77
87
|
},
|
|
78
|
-
{
|
|
79
|
-
name: "pm-skills",
|
|
80
|
-
description: "Product management skills for AI agents — 41 skills + 47 commands across the full product lifecycle (discover, define, develop, deliver, measure, iterate). Includes Meeting Skills Family v2.11.0 (5 cross-cutting skills under a shared contract with enforcing CI), OKR Skills v2.12.0 (foundation-okr-writer + measure-okr-grader for the quarterly OKR write-and-score cycle), lean canvas, persona, JTBD, PRD, user stories, acceptance criteria, hypothesis, experiment design, retrospective, launch checklist, release notes, and pm-skill-builder for authoring new skills. Follows the agentskills.io specification. Vendored snapshot at third-party/pm-skills/ pinned to upstream SHA 8d23508 (v2.13.1).",
|
|
81
|
-
version: "2.13.1",
|
|
82
|
-
source: "./third-party/pm-skills",
|
|
83
|
-
author: {
|
|
84
|
-
name: "product-on-purpose",
|
|
85
|
-
url: "https://github.com/product-on-purpose",
|
|
86
|
-
},
|
|
87
|
-
category: "product",
|
|
88
|
-
homepage: "https://github.com/product-on-purpose/pm-skills",
|
|
89
|
-
},
|
|
90
88
|
];
|
|
91
89
|
export function isPluginMode(value) {
|
|
92
90
|
return value === "beginner" || value === "expert";
|
|
@@ -358,6 +356,11 @@ export function getClaudePluginManifest() {
|
|
|
358
356
|
};
|
|
359
357
|
}
|
|
360
358
|
export function getPluginHooksConfig() {
|
|
359
|
+
const gateguardCommand = {
|
|
360
|
+
type: "command",
|
|
361
|
+
command: "node \"${CLAUDE_PLUGIN_ROOT}/hooks/gateguard.mjs\"",
|
|
362
|
+
timeout: 5,
|
|
363
|
+
};
|
|
361
364
|
const observeCommand = {
|
|
362
365
|
type: "command",
|
|
363
366
|
command: "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/observe.sh\"",
|
|
@@ -374,9 +377,13 @@ export function getPluginHooksConfig() {
|
|
|
374
377
|
timeout: 5,
|
|
375
378
|
};
|
|
376
379
|
return {
|
|
377
|
-
description: "
|
|
380
|
+
description: "Gateguard fact-forcing PreToolUse, observation, session lifecycle, and 3-section-close discipline hooks for continuous-improvement.",
|
|
378
381
|
hooks: {
|
|
379
|
-
|
|
382
|
+
// gateguard runs FIRST so its block decision short-circuits before
|
|
383
|
+
// observe.sh records the tool call. observe.sh stays in PreToolUse for
|
|
384
|
+
// the observation feed; the Claude Code host runs both regardless of
|
|
385
|
+
// gateguard's decision.
|
|
386
|
+
PreToolUse: [{ hooks: [gateguardCommand, observeCommand] }],
|
|
380
387
|
PostToolUse: [{ hooks: [observeCommand] }],
|
|
381
388
|
SessionStart: [{ hooks: [sessionCommand] }],
|
|
382
389
|
SessionEnd: [{ hooks: [sessionCommand] }],
|
|
@@ -409,7 +416,7 @@ export function getClaudePluginMarketplaceManifest() {
|
|
|
409
416
|
export function getClaudeRepoMarketplaceManifest(extraPlugins = []) {
|
|
410
417
|
return {
|
|
411
418
|
name: PACKAGE_NAME,
|
|
412
|
-
description: "Marketplace for the Continuous Improvement Claude Code plugin and
|
|
419
|
+
description: "Marketplace for the Continuous Improvement Claude Code plugin and four vendored upstream companions (Obra superpowers, addyosmani/agent-skills, ruflo-swarm, oh-my-claudecode). All four companions are pinned-SHA snapshots in third-party/ — see third-party/MANIFEST.md for refresh recipes and per-snapshot OUR_NOTES.md for integration scope. Product-management coverage is provided out-of-band by phuryn/pm-skills via Claude Code's plugin marketplace — see docs/THIRD_PARTY.md.",
|
|
413
420
|
owner: {
|
|
414
421
|
name: AUTHOR.name,
|
|
415
422
|
},
|
package/llms.txt
CHANGED
|
@@ -1,68 +1,68 @@
|
|
|
1
|
-
# continuous-improvement
|
|
2
|
-
|
|
3
|
-
> Stops Claude Code from skipping research, claiming 'done' without verifying, and repeating yesterday's mistakes. The 7 Laws of AI Agent Discipline — 13 enforcement skills, gating hooks, and the Mulahazah auto-leveling instinct engine.
|
|
4
|
-
|
|
5
|
-
## What This Is
|
|
6
|
-
|
|
7
|
-
A discipline framework for AI coding agents. It enforces seven laws — research, plan, execute one thing at a time, verify, reflect, iterate, learn — and builds behavioral instincts over time via the Mulahazah learning system, so the same correction does not have to be given twice.
|
|
8
|
-
|
|
9
|
-
## Install
|
|
10
|
-
|
|
11
|
-
```bash
|
|
12
|
-
npx continuous-improvement install
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
## The 7 Laws
|
|
16
|
-
|
|
17
|
-
1. Research Before Executing — search before writing
|
|
18
|
-
2. Plan Is Sacred — state WILL/WILL NOT/VERIFY before acting
|
|
19
|
-
3. One Thing at a Time — complete and verify one task before the next
|
|
20
|
-
4. Verify Before Reporting — "done" requires actual proof
|
|
21
|
-
5. Reflect After Sessions — capture what worked, what failed, and the top-3 next moves
|
|
22
|
-
6. Iterate One Change — one change, verify, then next
|
|
23
|
-
7. Learn From Every Session — patterns become instincts
|
|
24
|
-
|
|
25
|
-
## Reflection Block (Law 5 -> Law 6 Handoff)
|
|
26
|
-
|
|
27
|
-
Each reflection ends with a ranked top-3 of concrete core-development next moves:
|
|
28
|
-
|
|
29
|
-
```
|
|
30
|
-
## Reflection
|
|
31
|
-
- What worked:
|
|
32
|
-
- What failed:
|
|
33
|
-
- What I'd do differently:
|
|
34
|
-
- Rule to add:
|
|
35
|
-
- Iteration — Next best recommendations (ranked, top 3):
|
|
36
|
-
1. <primary>
|
|
37
|
-
2. <alternative — different angle>
|
|
38
|
-
3. <alternative — smaller/larger scope>
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
The Iteration field is build/fix/refactor/investigate moves only — not git steps, not verification re-runs, not deploy actions. Format per item: `<verb> <object at path:line> (<why>)`. Full spec in SKILL.md.
|
|
42
|
-
|
|
43
|
-
## Key Concepts
|
|
44
|
-
|
|
45
|
-
- **Mulahazah** — auto-leveling learning system that captures tool usage patterns
|
|
46
|
-
- **Instincts** — YAML-based behavioral rules with confidence scoring (0.0-0.9)
|
|
47
|
-
- **Auto-leveling** — CAPTURE → ANALYZE → SUGGEST → AUTO-APPLY (no config needed)
|
|
48
|
-
- **Project-scoped** — instincts are per-project, promoted to global when seen in 2+ projects
|
|
49
|
-
- **Planning-With-Files** — opt-in project-root memory files: `task_plan.md`, `findings.md`, `progress.md`
|
|
50
|
-
|
|
51
|
-
## Optional Planning Workflow
|
|
52
|
-
|
|
53
|
-
When a task needs persistent file-based planning, use the `planning-with-files` workflow to create:
|
|
54
|
-
- `task_plan.md` — phases, status, decisions, errors
|
|
55
|
-
- `findings.md` — research notes and sources
|
|
56
|
-
- `progress.md` — session log and verification notes
|
|
57
|
-
|
|
58
|
-
This workflow is explicit and opt-in. Files are created in the git root when available, otherwise the current working directory.
|
|
59
|
-
|
|
60
|
-
## Works With
|
|
61
|
-
|
|
62
|
-
- Claude Code (full support: skill + hooks + MCP server + slash commands + auto-leveling instincts)
|
|
63
|
-
|
|
64
|
-
## Links
|
|
65
|
-
|
|
66
|
-
- GitHub: https://github.com/naimkatiman/continuous-improvement
|
|
67
|
-
- npm: https://www.npmjs.com/package/continuous-improvement
|
|
68
|
-
- Skill file: https://raw.githubusercontent.com/naimkatiman/continuous-improvement/main/SKILL.md
|
|
1
|
+
# continuous-improvement
|
|
2
|
+
|
|
3
|
+
> Stops Claude Code from skipping research, claiming 'done' without verifying, and repeating yesterday's mistakes. The 7 Laws of AI Agent Discipline — 13 enforcement skills, gating hooks, and the Mulahazah auto-leveling instinct engine.
|
|
4
|
+
|
|
5
|
+
## What This Is
|
|
6
|
+
|
|
7
|
+
A discipline framework for AI coding agents. It enforces seven laws — research, plan, execute one thing at a time, verify, reflect, iterate, learn — and builds behavioral instincts over time via the Mulahazah learning system, so the same correction does not have to be given twice.
|
|
8
|
+
|
|
9
|
+
## Install
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npx continuous-improvement install
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## The 7 Laws
|
|
16
|
+
|
|
17
|
+
1. Research Before Executing — search before writing
|
|
18
|
+
2. Plan Is Sacred — state WILL/WILL NOT/VERIFY before acting
|
|
19
|
+
3. One Thing at a Time — complete and verify one task before the next
|
|
20
|
+
4. Verify Before Reporting — "done" requires actual proof
|
|
21
|
+
5. Reflect After Sessions — capture what worked, what failed, and the top-3 next moves
|
|
22
|
+
6. Iterate One Change — one change, verify, then next
|
|
23
|
+
7. Learn From Every Session — patterns become instincts
|
|
24
|
+
|
|
25
|
+
## Reflection Block (Law 5 -> Law 6 Handoff)
|
|
26
|
+
|
|
27
|
+
Each reflection ends with a ranked top-3 of concrete core-development next moves:
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
## Reflection
|
|
31
|
+
- What worked:
|
|
32
|
+
- What failed:
|
|
33
|
+
- What I'd do differently:
|
|
34
|
+
- Rule to add:
|
|
35
|
+
- Iteration — Next best recommendations (ranked, top 3):
|
|
36
|
+
1. <primary>
|
|
37
|
+
2. <alternative — different angle>
|
|
38
|
+
3. <alternative — smaller/larger scope>
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
The Iteration field is build/fix/refactor/investigate moves only — not git steps, not verification re-runs, not deploy actions. Format per item: `<verb> <object at path:line> (<why>)`. Full spec in SKILL.md.
|
|
42
|
+
|
|
43
|
+
## Key Concepts
|
|
44
|
+
|
|
45
|
+
- **Mulahazah** — auto-leveling learning system that captures tool usage patterns
|
|
46
|
+
- **Instincts** — YAML-based behavioral rules with confidence scoring (0.0-0.9)
|
|
47
|
+
- **Auto-leveling** — CAPTURE → ANALYZE → SUGGEST → AUTO-APPLY (no config needed)
|
|
48
|
+
- **Project-scoped** — instincts are per-project, promoted to global when seen in 2+ projects
|
|
49
|
+
- **Planning-With-Files** — opt-in project-root memory files: `task_plan.md`, `findings.md`, `progress.md`
|
|
50
|
+
|
|
51
|
+
## Optional Planning Workflow
|
|
52
|
+
|
|
53
|
+
When a task needs persistent file-based planning, use the `planning-with-files` workflow to create:
|
|
54
|
+
- `task_plan.md` — phases, status, decisions, errors
|
|
55
|
+
- `findings.md` — research notes and sources
|
|
56
|
+
- `progress.md` — session log and verification notes
|
|
57
|
+
|
|
58
|
+
This workflow is explicit and opt-in. Files are created in the git root when available, otherwise the current working directory.
|
|
59
|
+
|
|
60
|
+
## Works With
|
|
61
|
+
|
|
62
|
+
- Claude Code (full support: skill + hooks + MCP server + slash commands + auto-leveling instincts)
|
|
63
|
+
|
|
64
|
+
## Links
|
|
65
|
+
|
|
66
|
+
- GitHub: https://github.com/naimkatiman/continuous-improvement
|
|
67
|
+
- npm: https://www.npmjs.com/package/continuous-improvement
|
|
68
|
+
- Skill file: https://raw.githubusercontent.com/naimkatiman/continuous-improvement/main/SKILL.md
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "continuous-improvement",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.9.2",
|
|
4
4
|
"description": "Stops Claude Code from skipping research, claiming 'done' without verifying, and repeating yesterday's mistakes. The 7 Laws of AI Agent Discipline — 13 enforcement skills, gating hooks, the Mulahazah auto-leveling instinct engine, and a GitHub Action transcript linter. Beginner: one /plugin install command. Expert: adds MCP tools and session hooks.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"claude-code",
|
|
@@ -45,7 +45,8 @@
|
|
|
45
45
|
"verify:docs-substrings": "node bin/check-docs-substrings.mjs",
|
|
46
46
|
"verify:everything-mirror": "node bin/check-everything-mirror.mjs",
|
|
47
47
|
"verify:routing-targets": "node bin/check-routing-targets.mjs",
|
|
48
|
-
"verify:
|
|
48
|
+
"verify:doc-runtime-claims": "node bin/check-doc-runtime-claims.mjs",
|
|
49
|
+
"verify:all": "npm run verify:skill-mirror && npm run verify:skill-tiers && npm run verify:skill-law-tag && npm run verify:docs-substrings && npm run verify:everything-mirror && npm run verify:routing-targets && npm run verify:doc-runtime-claims && npm run typecheck"
|
|
49
50
|
},
|
|
50
51
|
"files": [
|
|
51
52
|
".claude-plugin/",
|
package/plugins/beginner.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "continuous-improvement",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.9.2",
|
|
4
4
|
"mode": "beginner",
|
|
5
5
|
"description": "Beginner mode: see what your agent learned, list its instincts, and request a session reflection. Bundles four discipline skills (gateguard, para-memory-files, tdd-workflow, verification-loop) so research, memory, tests, and verification happen by default.",
|
|
6
6
|
"tools": [
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
{
|
|
9
9
|
"name": "continuous-improvement",
|
|
10
10
|
"description": "Stops Claude Code from skipping research, claiming 'done' without verifying, and repeating yesterday's mistakes. The 7 Laws of AI Agent Discipline — 13 enforcement skills, gating hooks, and the Mulahazah auto-leveling instinct engine.",
|
|
11
|
-
"version": "3.
|
|
11
|
+
"version": "3.9.2",
|
|
12
12
|
"source": "./",
|
|
13
13
|
"author": {
|
|
14
14
|
"name": "naimkatiman"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "continuous-improvement",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.9.2",
|
|
4
4
|
"description": "Stops Claude Code from skipping research, claiming 'done' without verifying, and repeating yesterday's mistakes. The 7 Laws of AI Agent Discipline — 13 enforcement skills, gating hooks, and the Mulahazah auto-leveling instinct engine.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "naimkatiman",
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 Naim Katiman
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Naim Katiman
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -8,6 +8,7 @@ Included surfaces:
|
|
|
8
8
|
- `.claude-plugin/marketplace.json`
|
|
9
9
|
- `skills/`
|
|
10
10
|
- `commands/`
|
|
11
|
+
- `agents/` — `code-reviewer`, `security-auditor`, `test-engineer` personas (auto-discovered Claude Code subagents; pattern from addy/agent-skills)
|
|
11
12
|
- `hooks/`
|
|
12
13
|
- `bin/mcp-server.mjs`
|
|
13
14
|
- `bin/observe.mjs`
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
# Agent Personas
|
|
2
|
+
|
|
3
|
+
Specialist personas that play a single role with a single perspective. Each persona is a Markdown file consumed as a system prompt by your harness (Claude Code, Cursor, Copilot, etc.).
|
|
4
|
+
|
|
5
|
+
| Persona | Role | Best for |
|
|
6
|
+
|---------|------|----------|
|
|
7
|
+
| [code-reviewer](code-reviewer.md) | Senior Staff Engineer | Five-axis review before merge |
|
|
8
|
+
| [security-auditor](security-auditor.md) | Security Engineer | Vulnerability detection, OWASP-style audit |
|
|
9
|
+
| [test-engineer](test-engineer.md) | QA Engineer | Test strategy, coverage analysis, Prove-It pattern |
|
|
10
|
+
|
|
11
|
+
## How personas relate to skills and commands
|
|
12
|
+
|
|
13
|
+
Three layers, each with a distinct job:
|
|
14
|
+
|
|
15
|
+
| Layer | What it is | Example | Composition role |
|
|
16
|
+
|-------|-----------|---------|------------------|
|
|
17
|
+
| **Skill** | A workflow with steps and exit criteria | `code-review-and-quality` | The *how* — invoked from inside a persona or command |
|
|
18
|
+
| **Persona** | A role with a perspective and an output format | `code-reviewer` | The *who* — adopts a viewpoint, produces a report |
|
|
19
|
+
| **Command** | A user-facing entry point | `/review`, `/ship` | The *when* — composes personas and skills |
|
|
20
|
+
|
|
21
|
+
The user (or a slash command) is the orchestrator. **Personas do not call other personas.** Skills are mandatory hops inside a persona's workflow.
|
|
22
|
+
|
|
23
|
+
## When to use each
|
|
24
|
+
|
|
25
|
+
### Direct persona invocation
|
|
26
|
+
Pick this when you want one perspective on the current change and the user is in the loop.
|
|
27
|
+
|
|
28
|
+
- "Review this PR" → invoke `code-reviewer` directly
|
|
29
|
+
- "Are there security issues in `auth.ts`?" → invoke `security-auditor` directly
|
|
30
|
+
- "What tests are missing for the checkout flow?" → invoke `test-engineer` directly
|
|
31
|
+
|
|
32
|
+
### Slash command (single persona behind it)
|
|
33
|
+
Pick this when there's a repeatable workflow you'd otherwise re-explain every time.
|
|
34
|
+
|
|
35
|
+
- `/review` → wraps `code-reviewer` with the project's review skill
|
|
36
|
+
- `/test` → wraps `test-engineer` with TDD skill
|
|
37
|
+
|
|
38
|
+
### Slash command (orchestrator — fan-out)
|
|
39
|
+
Pick this only when **independent** investigations can run in parallel and produce reports that a single agent then merges.
|
|
40
|
+
|
|
41
|
+
- `/ship` → fans out to `code-reviewer` + `security-auditor` + `test-engineer` in parallel, then synthesizes their reports into a go/no-go decision
|
|
42
|
+
|
|
43
|
+
This is the only orchestration pattern this repo endorses. See [references/orchestration-patterns.md](../references/orchestration-patterns.md) for the full pattern catalog and anti-patterns.
|
|
44
|
+
|
|
45
|
+
## Decision matrix
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
Is the work a single perspective on a single artifact?
|
|
49
|
+
├── Yes → Direct persona invocation
|
|
50
|
+
└── No → Are the sub-tasks independent (no shared mutable state, no ordering)?
|
|
51
|
+
├── Yes → Slash command with parallel fan-out (e.g. /ship)
|
|
52
|
+
└── No → Sequential slash commands run by the user (/spec → /plan → /build → /test → /review)
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Worked example: valid orchestration
|
|
56
|
+
|
|
57
|
+
`/ship` is the canonical fan-out orchestrator in this repo:
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
/ship
|
|
61
|
+
├── (parallel) code-reviewer → review report
|
|
62
|
+
├── (parallel) security-auditor → audit report
|
|
63
|
+
└── (parallel) test-engineer → coverage report
|
|
64
|
+
↓
|
|
65
|
+
merge phase (main agent)
|
|
66
|
+
↓
|
|
67
|
+
go/no-go decision + rollback plan
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Why this works:
|
|
71
|
+
- Each sub-agent operates on the same diff but produces a **different perspective**
|
|
72
|
+
- They have no dependencies on each other → genuine parallelism, real wall-clock savings
|
|
73
|
+
- Each runs in a fresh context window → main session stays uncluttered
|
|
74
|
+
- The merge step is small and benefits from full context, so it stays in the main agent
|
|
75
|
+
|
|
76
|
+
## Worked example: invalid orchestration (do not build this)
|
|
77
|
+
|
|
78
|
+
A `meta-orchestrator` persona whose job is "decide which other persona to call":
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
/work-on-pr → meta-orchestrator
|
|
82
|
+
↓ (decides "this needs a review")
|
|
83
|
+
code-reviewer
|
|
84
|
+
↓ (returns)
|
|
85
|
+
meta-orchestrator (paraphrases result)
|
|
86
|
+
↓
|
|
87
|
+
user
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Why this fails:
|
|
91
|
+
- Pure routing layer with no domain value
|
|
92
|
+
- Adds two paraphrasing hops → information loss + 2× token cost
|
|
93
|
+
- The user already knows they want a review; let them call `/review` directly
|
|
94
|
+
- Replicates work that slash commands and `AGENTS.md` intent-mapping already do
|
|
95
|
+
|
|
96
|
+
## Rules for personas
|
|
97
|
+
|
|
98
|
+
1. A persona is a single role with a single output format. If you find yourself adding a second role, create a second persona.
|
|
99
|
+
2. **Personas do not invoke other personas.** Composition is the job of slash commands or the user. On Claude Code this is also a hard platform constraint — *"subagents cannot spawn other subagents"* — so the rule is enforced for you.
|
|
100
|
+
3. A persona may invoke skills (the *how*).
|
|
101
|
+
4. Every persona file ends with a "Composition" block stating where it fits.
|
|
102
|
+
|
|
103
|
+
## Claude Code interop
|
|
104
|
+
|
|
105
|
+
The personas in this repo are designed to work as Claude Code subagents and as Agent Teams teammates without modification:
|
|
106
|
+
|
|
107
|
+
- **As subagents:** auto-discovered when this plugin is enabled (no path config needed). Use the Agent tool with `subagent_type: code-reviewer` (or `security-auditor`, `test-engineer`). `/ship` is the canonical example.
|
|
108
|
+
- **As Agent Teams teammates** (experimental, requires `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1`): reference the same persona name when spawning a teammate. The persona's body is **appended to** the teammate's system prompt as additional instructions (not a replacement), so your persona text sits on top of the team-coordination instructions the lead installs (SendMessage, task-list tools, etc.).
|
|
109
|
+
|
|
110
|
+
Subagents only report results back to the main agent. Agent Teams let teammates message each other directly. Use subagents when reports are enough; use Agent Teams when sub-agents need to challenge each other's findings (e.g. competing-hypothesis debugging). See [references/orchestration-patterns.md](../references/orchestration-patterns.md) for the full mapping.
|
|
111
|
+
|
|
112
|
+
Plugin agents do not support `hooks`, `mcpServers`, or `permissionMode` frontmatter — those fields are silently ignored. Avoid relying on them when authoring new personas here.
|
|
113
|
+
|
|
114
|
+
## Adding a new persona
|
|
115
|
+
|
|
116
|
+
1. Create `agents/<role>.md` with the same frontmatter format used by existing personas.
|
|
117
|
+
2. Define the role, scope, output format, and rules.
|
|
118
|
+
3. Add a **Composition** block at the bottom (Invoke directly when / Invoke via / Do not invoke from another persona).
|
|
119
|
+
4. Add the persona to the table at the top of this file.
|
|
120
|
+
5. If the persona enables a new orchestration pattern, document it in `references/orchestration-patterns.md` rather than inventing the pattern in the persona file itself.
|