oh-my-claude-sisyphus 3.8.15 → 3.9.0
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 +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/.mcp.json +1 -1
- package/README.md +9 -11
- package/agents/analyst.md +41 -0
- package/agents/architect.md +45 -0
- package/agents/critic.md +42 -0
- package/agents/deep-executor.md +193 -0
- package/agents/planner.md +82 -0
- package/bridge/mcp-server.cjs +1 -1
- package/commands/autopilot.md +2 -6
- package/commands/hud.md +7 -2
- package/commands/ralph.md +3 -3
- package/commands/ultrapilot.md +2 -6
- package/dist/__tests__/agent-registry.test.js +1 -1
- package/dist/__tests__/delegation-enforcement-levels.test.js +0 -1
- package/dist/__tests__/delegation-enforcement-levels.test.js.map +1 -1
- package/dist/__tests__/hooks/learner/parser.test.d.ts +5 -0
- package/dist/__tests__/hooks/learner/parser.test.d.ts.map +1 -0
- package/dist/__tests__/hooks/learner/parser.test.js +201 -0
- package/dist/__tests__/hooks/learner/parser.test.js.map +1 -0
- package/dist/__tests__/hud/cwd.test.d.ts +2 -0
- package/dist/__tests__/hud/cwd.test.d.ts.map +1 -0
- package/dist/__tests__/hud/cwd.test.js +62 -0
- package/dist/__tests__/hud/cwd.test.js.map +1 -0
- package/dist/__tests__/hud/defaults.test.d.ts +2 -0
- package/dist/__tests__/hud/defaults.test.d.ts.map +1 -0
- package/dist/__tests__/hud/defaults.test.js +21 -0
- package/dist/__tests__/hud/defaults.test.js.map +1 -0
- package/dist/__tests__/hud/render.test.d.ts +2 -0
- package/dist/__tests__/hud/render.test.d.ts.map +1 -0
- package/dist/__tests__/hud/render.test.js +141 -0
- package/dist/__tests__/hud/render.test.js.map +1 -0
- package/dist/__tests__/hud/thinking.test.d.ts +2 -0
- package/dist/__tests__/hud/thinking.test.d.ts.map +1 -0
- package/dist/__tests__/hud/thinking.test.js +32 -0
- package/dist/__tests__/hud/thinking.test.js.map +1 -0
- package/dist/__tests__/installer.test.js +8 -8
- package/dist/__tests__/installer.test.js.map +1 -1
- package/dist/__tests__/mnemosyne/parser.test.js +1 -1
- package/dist/__tests__/mnemosyne/parser.test.js.map +1 -1
- package/dist/__tests__/omc-tools-server.test.js +2 -2
- package/dist/__tests__/omc-tools-server.test.js.map +1 -1
- package/dist/__tests__/skills.test.js +5 -4
- package/dist/__tests__/skills.test.js.map +1 -1
- package/dist/agents/deep-executor.d.ts +15 -0
- package/dist/agents/deep-executor.d.ts.map +1 -0
- package/dist/agents/deep-executor.js +47 -0
- package/dist/agents/deep-executor.js.map +1 -0
- package/dist/agents/definitions.d.ts +15 -0
- package/dist/agents/definitions.d.ts.map +1 -1
- package/dist/agents/definitions.js +25 -0
- package/dist/agents/definitions.js.map +1 -1
- package/dist/agents/index.d.ts +1 -0
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +1 -0
- package/dist/agents/index.js.map +1 -1
- package/dist/cli/commands/doctor-conflicts.d.ts +55 -0
- package/dist/cli/commands/doctor-conflicts.d.ts.map +1 -0
- package/dist/cli/commands/doctor-conflicts.js +261 -0
- package/dist/cli/commands/doctor-conflicts.js.map +1 -0
- package/dist/cli/index.js +16 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/features/auto-update.d.ts +12 -0
- package/dist/features/auto-update.d.ts.map +1 -1
- package/dist/features/auto-update.js +4 -1
- package/dist/features/auto-update.js.map +1 -1
- package/dist/features/context-injector/types.d.ts +1 -1
- package/dist/features/context-injector/types.d.ts.map +1 -1
- package/dist/features/continuation-enforcement.js +1 -1
- package/dist/features/state-manager/index.d.ts.map +1 -1
- package/dist/features/state-manager/index.js +7 -4
- package/dist/features/state-manager/index.js.map +1 -1
- package/dist/features/verification/example.d.ts.map +1 -1
- package/dist/features/verification/example.js +4 -2
- package/dist/features/verification/example.js.map +1 -1
- package/dist/hooks/__tests__/bridge.test.d.ts +2 -0
- package/dist/hooks/__tests__/bridge.test.d.ts.map +1 -0
- package/dist/hooks/__tests__/bridge.test.js +199 -0
- package/dist/hooks/__tests__/bridge.test.js.map +1 -0
- package/dist/hooks/beads-context/__tests__/index.test.d.ts +2 -0
- package/dist/hooks/beads-context/__tests__/index.test.d.ts.map +1 -0
- package/dist/hooks/beads-context/__tests__/index.test.js +150 -0
- package/dist/hooks/beads-context/__tests__/index.test.js.map +1 -0
- package/dist/hooks/beads-context/constants.d.ts +3 -0
- package/dist/hooks/beads-context/constants.d.ts.map +1 -0
- package/dist/hooks/beads-context/constants.js +35 -0
- package/dist/hooks/beads-context/constants.js.map +1 -0
- package/dist/hooks/beads-context/index.d.ts +21 -0
- package/dist/hooks/beads-context/index.d.ts.map +1 -0
- package/dist/hooks/beads-context/index.js +62 -0
- package/dist/hooks/beads-context/index.js.map +1 -0
- package/dist/hooks/beads-context/types.d.ts +7 -0
- package/dist/hooks/beads-context/types.d.ts.map +1 -0
- package/dist/hooks/beads-context/types.js +2 -0
- package/dist/hooks/beads-context/types.js.map +1 -0
- package/dist/hooks/bridge.d.ts +4 -0
- package/dist/hooks/bridge.d.ts.map +1 -1
- package/dist/hooks/bridge.js +80 -47
- package/dist/hooks/bridge.js.map +1 -1
- package/dist/hooks/index.d.ts +2 -1
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +4 -1
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/learner/parser.d.ts.map +1 -1
- package/dist/hooks/learner/parser.js +12 -5
- package/dist/hooks/learner/parser.js.map +1 -1
- package/dist/hooks/mode-registry/index.d.ts +2 -0
- package/dist/hooks/mode-registry/index.d.ts.map +1 -1
- package/dist/hooks/mode-registry/index.js +8 -19
- package/dist/hooks/mode-registry/index.js.map +1 -1
- package/dist/hooks/permission-handler/index.d.ts.map +1 -1
- package/dist/hooks/permission-handler/index.js +3 -1
- package/dist/hooks/permission-handler/index.js.map +1 -1
- package/dist/hooks/persistent-mode/index.d.ts +1 -1
- package/dist/hooks/persistent-mode/index.d.ts.map +1 -1
- package/dist/hooks/persistent-mode/index.js +5 -33
- package/dist/hooks/persistent-mode/index.js.map +1 -1
- package/dist/hooks/ralph/index.d.ts +1 -1
- package/dist/hooks/ralph/index.d.ts.map +1 -1
- package/dist/hooks/ralph/index.js +1 -1
- package/dist/hooks/ralph/index.js.map +1 -1
- package/dist/hooks/ralph/loop.d.ts +1 -9
- package/dist/hooks/ralph/loop.d.ts.map +1 -1
- package/dist/hooks/ralph/loop.js +1 -37
- package/dist/hooks/ralph/loop.js.map +1 -1
- package/dist/hooks/ralph/prd.js +1 -1
- package/dist/hooks/ralph/verifier.d.ts +4 -5
- package/dist/hooks/ralph/verifier.d.ts.map +1 -1
- package/dist/hooks/ralph/verifier.js +7 -10
- package/dist/hooks/ralph/verifier.js.map +1 -1
- package/dist/hooks/session-end/index.d.ts +13 -0
- package/dist/hooks/session-end/index.d.ts.map +1 -1
- package/dist/hooks/session-end/index.js +69 -0
- package/dist/hooks/session-end/index.js.map +1 -1
- package/dist/hooks/setup/index.d.ts.map +1 -1
- package/dist/hooks/setup/index.js +12 -5
- package/dist/hooks/setup/index.js.map +1 -1
- package/dist/hooks/subagent-tracker/index.d.ts.map +1 -1
- package/dist/hooks/subagent-tracker/index.js +25 -9
- package/dist/hooks/subagent-tracker/index.js.map +1 -1
- package/dist/hooks/ultrawork/index.d.ts +2 -2
- package/dist/hooks/ultrawork/index.d.ts.map +1 -1
- package/dist/hooks/ultrawork/index.js +2 -46
- package/dist/hooks/ultrawork/index.js.map +1 -1
- package/dist/hud/elements/cwd.d.ts +15 -0
- package/dist/hud/elements/cwd.d.ts.map +1 -0
- package/dist/hud/elements/cwd.js +39 -0
- package/dist/hud/elements/cwd.js.map +1 -0
- package/dist/hud/elements/index.d.ts +1 -0
- package/dist/hud/elements/index.d.ts.map +1 -1
- package/dist/hud/elements/index.js +1 -0
- package/dist/hud/elements/index.js.map +1 -1
- package/dist/hud/elements/thinking.d.ts +7 -5
- package/dist/hud/elements/thinking.d.ts.map +1 -1
- package/dist/hud/elements/thinking.js +18 -6
- package/dist/hud/elements/thinking.js.map +1 -1
- package/dist/hud/index.js +5 -3
- package/dist/hud/index.js.map +1 -1
- package/dist/hud/omc-state.d.ts +1 -1
- package/dist/hud/omc-state.d.ts.map +1 -1
- package/dist/hud/omc-state.js +14 -31
- package/dist/hud/omc-state.js.map +1 -1
- package/dist/hud/render.d.ts +9 -0
- package/dist/hud/render.d.ts.map +1 -1
- package/dist/hud/render.js +27 -7
- package/dist/hud/render.js.map +1 -1
- package/dist/hud/state.d.ts +2 -2
- package/dist/hud/state.d.ts.map +1 -1
- package/dist/hud/state.js +4 -33
- package/dist/hud/state.js.map +1 -1
- package/dist/hud/transcript.d.ts +4 -1
- package/dist/hud/transcript.d.ts.map +1 -1
- package/dist/hud/transcript.js +4 -9
- package/dist/hud/transcript.js.map +1 -1
- package/dist/hud/types.d.ts +20 -1
- package/dist/hud/types.d.ts.map +1 -1
- package/dist/hud/types.js +38 -9
- package/dist/hud/types.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/installer/__tests__/claude-md-merge.test.d.ts +6 -0
- package/dist/installer/__tests__/claude-md-merge.test.d.ts.map +1 -0
- package/dist/installer/__tests__/claude-md-merge.test.js +220 -0
- package/dist/installer/__tests__/claude-md-merge.test.js.map +1 -0
- package/dist/installer/__tests__/safe-installer.test.d.ts +6 -0
- package/dist/installer/__tests__/safe-installer.test.d.ts.map +1 -0
- package/dist/installer/__tests__/safe-installer.test.js +172 -0
- package/dist/installer/__tests__/safe-installer.test.js.map +1 -0
- package/dist/installer/hooks.d.ts +1 -1
- package/dist/installer/hooks.d.ts.map +1 -1
- package/dist/installer/hooks.js +4 -2
- package/dist/installer/hooks.js.map +1 -1
- package/dist/installer/index.d.ts +27 -1
- package/dist/installer/index.d.ts.map +1 -1
- package/dist/installer/index.js +209 -85
- package/dist/installer/index.js.map +1 -1
- package/dist/mcp/omc-tools-server.d.ts +1 -1
- package/dist/mcp/omc-tools-server.d.ts.map +1 -1
- package/dist/mcp/omc-tools-server.js +3 -3
- package/dist/mcp/omc-tools-server.js.map +1 -1
- package/dist/mcp/standalone-server.js +1 -1
- package/dist/mcp/standalone-server.js.map +1 -1
- package/dist/verification/tier-selector.d.ts +40 -0
- package/dist/verification/tier-selector.d.ts.map +1 -0
- package/dist/verification/tier-selector.js +95 -0
- package/dist/verification/tier-selector.js.map +1 -0
- package/dist/verification/tier-selector.test.d.ts +2 -0
- package/dist/verification/tier-selector.test.d.ts.map +1 -0
- package/dist/verification/tier-selector.test.js +282 -0
- package/dist/verification/tier-selector.test.js.map +1 -0
- package/docs/AGENTS.md +100 -0
- package/docs/ARCHITECTURE.md +11 -7
- package/docs/CLAUDE.md +89 -379
- package/docs/DELEGATION-ENFORCER.md +1 -2
- package/docs/MIGRATION.md +1 -1
- package/docs/REFERENCE.md +29 -9
- package/docs/SYNC-SYSTEM.md +0 -2
- package/docs/partials/agent-tiers.md +165 -0
- package/docs/partials/features.md +131 -0
- package/docs/partials/mode-hierarchy.md +120 -0
- package/docs/partials/mode-selection-guide.md +82 -0
- package/docs/partials/verification-tiers.md +107 -0
- package/docs/shared/agent-tiers.md +165 -0
- package/docs/shared/features.md +131 -0
- package/docs/shared/mode-hierarchy.md +120 -0
- package/docs/shared/mode-selection-guide.md +82 -0
- package/docs/shared/verification-tiers.md +107 -0
- package/package.json +4 -3
- package/scripts/compose-docs.mjs +44 -0
- package/scripts/keyword-detector.mjs +13 -3
- package/scripts/persistent-mode.mjs +78 -47
- package/scripts/test-mutual-exclusion.ts +3 -3
- package/skills/AGENTS.md +59 -44
- package/skills/autopilot/SKILL.md +0 -2
- package/skills/cancel/SKILL.md +13 -32
- package/skills/deep-executor/SKILL.md +50 -0
- package/skills/ecomode/SKILL.md +58 -104
- package/skills/hud/SKILL.md +3 -2
- package/skills/omc-setup/SKILL.md +197 -20
- package/skills/plan/SKILL.md +62 -0
- package/skills/project-session-manager/SKILL.md +87 -4
- package/skills/project-session-manager/lib/config.sh +54 -5
- package/skills/project-session-manager/lib/parse.sh +65 -11
- package/skills/project-session-manager/lib/providers/github.sh +52 -0
- package/skills/project-session-manager/lib/providers/interface.sh +76 -0
- package/skills/project-session-manager/lib/providers/jira.sh +79 -0
- package/skills/project-session-manager/lib/session.sh +49 -12
- package/skills/project-session-manager/lib/worktree.sh +37 -4
- package/skills/project-session-manager/psm.sh +116 -51
- package/skills/ralph/SKILL.md +48 -44
- package/skills/ultrawork/SKILL.md +56 -67
- package/templates/hooks/keyword-detector.mjs +21 -13
- package/templates/hooks/lib/stdin.mjs +62 -0
- package/templates/hooks/persistent-mode.mjs +75 -34
- package/templates/hooks/post-tool-use.mjs +8 -10
- package/templates/hooks/pre-tool-use.mjs +9 -6
- package/templates/hooks/session-start.mjs +7 -8
- package/agents/AGENTS.md +0 -144
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Verification Tier Selector
|
|
3
|
+
*
|
|
4
|
+
* Scales verification effort with task complexity to optimize cost
|
|
5
|
+
* while maintaining quality. Used by ralph, autopilot, and ultrapilot.
|
|
6
|
+
*/
|
|
7
|
+
const TIER_AGENTS = {
|
|
8
|
+
LIGHT: {
|
|
9
|
+
agent: 'architect-low',
|
|
10
|
+
model: 'haiku',
|
|
11
|
+
evidenceRequired: ['lsp_diagnostics clean'],
|
|
12
|
+
},
|
|
13
|
+
STANDARD: {
|
|
14
|
+
agent: 'architect-medium',
|
|
15
|
+
model: 'sonnet',
|
|
16
|
+
evidenceRequired: ['lsp_diagnostics clean', 'build pass'],
|
|
17
|
+
},
|
|
18
|
+
THOROUGH: {
|
|
19
|
+
agent: 'architect',
|
|
20
|
+
model: 'opus',
|
|
21
|
+
evidenceRequired: ['full architect review', 'all tests pass', 'no regressions'],
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Select appropriate verification tier based on change metadata.
|
|
26
|
+
*/
|
|
27
|
+
export function selectVerificationTier(changes) {
|
|
28
|
+
// Security and architectural changes always require thorough review
|
|
29
|
+
if (changes.hasSecurityImplications || changes.hasArchitecturalChanges) {
|
|
30
|
+
return 'THOROUGH';
|
|
31
|
+
}
|
|
32
|
+
// Large scope changes require thorough review
|
|
33
|
+
if (changes.filesChanged > 20) {
|
|
34
|
+
return 'THOROUGH';
|
|
35
|
+
}
|
|
36
|
+
// Small, well-tested changes can use light verification
|
|
37
|
+
if (changes.filesChanged < 5 &&
|
|
38
|
+
changes.linesChanged < 100 &&
|
|
39
|
+
changes.testCoverage === 'full') {
|
|
40
|
+
return 'LIGHT';
|
|
41
|
+
}
|
|
42
|
+
// Default to standard verification
|
|
43
|
+
return 'STANDARD';
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Get the verification agent configuration for a tier.
|
|
47
|
+
*/
|
|
48
|
+
export function getVerificationAgent(tier) {
|
|
49
|
+
return TIER_AGENTS[tier];
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Detect if any files represent architectural changes.
|
|
53
|
+
*/
|
|
54
|
+
export function detectArchitecturalChanges(files) {
|
|
55
|
+
const architecturalPatterns = [
|
|
56
|
+
/config\.(ts|js|json)$/i,
|
|
57
|
+
/schema\.(ts|prisma|sql)$/i,
|
|
58
|
+
/definitions\.ts$/i,
|
|
59
|
+
/types\.ts$/i,
|
|
60
|
+
/package\.json$/i,
|
|
61
|
+
/tsconfig\.json$/i,
|
|
62
|
+
];
|
|
63
|
+
return files.some((file) => architecturalPatterns.some((pattern) => pattern.test(file)));
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Detect if any files have security implications.
|
|
67
|
+
*/
|
|
68
|
+
export function detectSecurityImplications(files) {
|
|
69
|
+
const securityPatterns = [
|
|
70
|
+
/\/auth\//i, // auth directory
|
|
71
|
+
/\/security\//i, // security directory
|
|
72
|
+
/(^|[\/-])permissions?\.(ts|js)$/i, // permission.ts, permissions.ts
|
|
73
|
+
/(^|[\/-])credentials?\.(ts|js|json)$/i, // credential.ts, credentials.json
|
|
74
|
+
/(^|[\/-])secrets?\.(ts|js|json|ya?ml)$/i, // secret.ts, secrets.yaml
|
|
75
|
+
/(^|[\/-])tokens?\.(ts|js|json)$/i, // token.ts, auth-token.ts
|
|
76
|
+
/\.(env|pem|key)(\.|$)/i, // .env, .env.local, cert.pem, private.key
|
|
77
|
+
/(^|[\/-])passwords?\.(ts|js|json)$/i, // password.ts
|
|
78
|
+
/(^|[\/-])oauth/i, // oauth.ts, oauth-config.ts, oauth2.ts
|
|
79
|
+
/(^|[\/-])jwt/i, // jwt.ts, jwt-utils.ts, jwt_utils.ts
|
|
80
|
+
];
|
|
81
|
+
return files.some((file) => securityPatterns.some((pattern) => pattern.test(file)));
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Build change metadata from a list of changed files and line count.
|
|
85
|
+
*/
|
|
86
|
+
export function buildChangeMetadata(files, linesChanged, testCoverage = 'partial') {
|
|
87
|
+
return {
|
|
88
|
+
filesChanged: files.length,
|
|
89
|
+
linesChanged,
|
|
90
|
+
hasArchitecturalChanges: detectArchitecturalChanges(files),
|
|
91
|
+
hasSecurityImplications: detectSecurityImplications(files),
|
|
92
|
+
testCoverage,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=tier-selector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tier-selector.js","sourceRoot":"","sources":["../../src/verification/tier-selector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAkBH,MAAM,WAAW,GAAgD;IAC/D,KAAK,EAAE;QACL,KAAK,EAAE,eAAe;QACtB,KAAK,EAAE,OAAO;QACd,gBAAgB,EAAE,CAAC,uBAAuB,CAAC;KAC5C;IACD,QAAQ,EAAE;QACR,KAAK,EAAE,kBAAkB;QACzB,KAAK,EAAE,QAAQ;QACf,gBAAgB,EAAE,CAAC,uBAAuB,EAAE,YAAY,CAAC;KAC1D;IACD,QAAQ,EAAE;QACR,KAAK,EAAE,WAAW;QAClB,KAAK,EAAE,MAAM;QACb,gBAAgB,EAAE,CAAC,uBAAuB,EAAE,gBAAgB,EAAE,gBAAgB,CAAC;KAChF;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAuB;IAC5D,oEAAoE;IACpE,IAAI,OAAO,CAAC,uBAAuB,IAAI,OAAO,CAAC,uBAAuB,EAAE,CAAC;QACvE,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,8CAA8C;IAC9C,IAAI,OAAO,CAAC,YAAY,GAAG,EAAE,EAAE,CAAC;QAC9B,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,wDAAwD;IACxD,IACE,OAAO,CAAC,YAAY,GAAG,CAAC;QACxB,OAAO,CAAC,YAAY,GAAG,GAAG;QAC1B,OAAO,CAAC,YAAY,KAAK,MAAM,EAC/B,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,mCAAmC;IACnC,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAsB;IACzD,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B,CAAC,KAAe;IACxD,MAAM,qBAAqB,GAAG;QAC5B,wBAAwB;QACxB,2BAA2B;QAC3B,mBAAmB;QACnB,aAAa;QACb,iBAAiB;QACjB,kBAAkB;KACnB,CAAC;IAEF,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CACzB,qBAAqB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAC5D,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B,CAAC,KAAe;IACxD,MAAM,gBAAgB,GAAG;QACvB,WAAW,EAA+B,iBAAiB;QAC3D,eAAe,EAA2B,qBAAqB;QAC/D,kCAAkC,EAAQ,gCAAgC;QAC1E,uCAAuC,EAAG,kCAAkC;QAC5E,yCAAyC,EAAE,0BAA0B;QACrE,kCAAkC,EAAQ,0BAA0B;QACpE,wBAAwB,EAAkB,0CAA0C;QACpF,qCAAqC,EAAK,cAAc;QACxD,iBAAiB,EAAyB,uCAAuC;QACjF,eAAe,EAA2B,qCAAqC;KAChF,CAAC;IAEF,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CACzB,gBAAgB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CACvD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAAe,EACf,YAAoB,EACpB,eAA4C,SAAS;IAErD,OAAO;QACL,YAAY,EAAE,KAAK,CAAC,MAAM;QAC1B,YAAY;QACZ,uBAAuB,EAAE,0BAA0B,CAAC,KAAK,CAAC;QAC1D,uBAAuB,EAAE,0BAA0B,CAAC,KAAK,CAAC;QAC1D,YAAY;KACb,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tier-selector.test.d.ts","sourceRoot":"","sources":["../../src/verification/tier-selector.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { selectVerificationTier, getVerificationAgent, detectArchitecturalChanges, detectSecurityImplications, buildChangeMetadata, } from './tier-selector.js';
|
|
3
|
+
describe('selectVerificationTier', () => {
|
|
4
|
+
it('returns LIGHT for small, well-tested changes', () => {
|
|
5
|
+
const changes = {
|
|
6
|
+
filesChanged: 2,
|
|
7
|
+
linesChanged: 50,
|
|
8
|
+
hasArchitecturalChanges: false,
|
|
9
|
+
hasSecurityImplications: false,
|
|
10
|
+
testCoverage: 'full',
|
|
11
|
+
};
|
|
12
|
+
expect(selectVerificationTier(changes)).toBe('LIGHT');
|
|
13
|
+
});
|
|
14
|
+
it('returns THOROUGH for security changes regardless of size', () => {
|
|
15
|
+
const changes = {
|
|
16
|
+
filesChanged: 1,
|
|
17
|
+
linesChanged: 5,
|
|
18
|
+
hasArchitecturalChanges: false,
|
|
19
|
+
hasSecurityImplications: true,
|
|
20
|
+
testCoverage: 'full',
|
|
21
|
+
};
|
|
22
|
+
expect(selectVerificationTier(changes)).toBe('THOROUGH');
|
|
23
|
+
});
|
|
24
|
+
it('returns THOROUGH for architectural changes', () => {
|
|
25
|
+
const changes = {
|
|
26
|
+
filesChanged: 3,
|
|
27
|
+
linesChanged: 80,
|
|
28
|
+
hasArchitecturalChanges: true,
|
|
29
|
+
hasSecurityImplications: false,
|
|
30
|
+
testCoverage: 'partial',
|
|
31
|
+
};
|
|
32
|
+
expect(selectVerificationTier(changes)).toBe('THOROUGH');
|
|
33
|
+
});
|
|
34
|
+
it('returns STANDARD for medium changes without special flags', () => {
|
|
35
|
+
const changes = {
|
|
36
|
+
filesChanged: 10,
|
|
37
|
+
linesChanged: 200,
|
|
38
|
+
hasArchitecturalChanges: false,
|
|
39
|
+
hasSecurityImplications: false,
|
|
40
|
+
testCoverage: 'partial',
|
|
41
|
+
};
|
|
42
|
+
expect(selectVerificationTier(changes)).toBe('STANDARD');
|
|
43
|
+
});
|
|
44
|
+
it('returns THOROUGH for >20 files', () => {
|
|
45
|
+
const changes = {
|
|
46
|
+
filesChanged: 25,
|
|
47
|
+
linesChanged: 100,
|
|
48
|
+
hasArchitecturalChanges: false,
|
|
49
|
+
hasSecurityImplications: false,
|
|
50
|
+
testCoverage: 'full',
|
|
51
|
+
};
|
|
52
|
+
expect(selectVerificationTier(changes)).toBe('THOROUGH');
|
|
53
|
+
});
|
|
54
|
+
it('returns STANDARD when test coverage is not full', () => {
|
|
55
|
+
const changes = {
|
|
56
|
+
filesChanged: 2,
|
|
57
|
+
linesChanged: 50,
|
|
58
|
+
hasArchitecturalChanges: false,
|
|
59
|
+
hasSecurityImplications: false,
|
|
60
|
+
testCoverage: 'partial',
|
|
61
|
+
};
|
|
62
|
+
expect(selectVerificationTier(changes)).toBe('STANDARD');
|
|
63
|
+
});
|
|
64
|
+
it('returns STANDARD when lines exceed 100', () => {
|
|
65
|
+
const changes = {
|
|
66
|
+
filesChanged: 3,
|
|
67
|
+
linesChanged: 150,
|
|
68
|
+
hasArchitecturalChanges: false,
|
|
69
|
+
hasSecurityImplications: false,
|
|
70
|
+
testCoverage: 'full',
|
|
71
|
+
};
|
|
72
|
+
expect(selectVerificationTier(changes)).toBe('STANDARD');
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
describe('getVerificationAgent', () => {
|
|
76
|
+
it('returns architect-low for LIGHT tier', () => {
|
|
77
|
+
const agent = getVerificationAgent('LIGHT');
|
|
78
|
+
expect(agent.agent).toBe('architect-low');
|
|
79
|
+
expect(agent.model).toBe('haiku');
|
|
80
|
+
});
|
|
81
|
+
it('returns architect-medium for STANDARD tier', () => {
|
|
82
|
+
const agent = getVerificationAgent('STANDARD');
|
|
83
|
+
expect(agent.agent).toBe('architect-medium');
|
|
84
|
+
expect(agent.model).toBe('sonnet');
|
|
85
|
+
});
|
|
86
|
+
it('returns architect for THOROUGH tier', () => {
|
|
87
|
+
const agent = getVerificationAgent('THOROUGH');
|
|
88
|
+
expect(agent.agent).toBe('architect');
|
|
89
|
+
expect(agent.model).toBe('opus');
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
describe('detectArchitecturalChanges', () => {
|
|
93
|
+
it('detects config files', () => {
|
|
94
|
+
expect(detectArchitecturalChanges(['src/config.ts'])).toBe(true);
|
|
95
|
+
expect(detectArchitecturalChanges(['app.config.json'])).toBe(true);
|
|
96
|
+
});
|
|
97
|
+
it('detects schema files', () => {
|
|
98
|
+
expect(detectArchitecturalChanges(['prisma/schema.prisma'])).toBe(true);
|
|
99
|
+
expect(detectArchitecturalChanges(['db/schema.sql'])).toBe(true);
|
|
100
|
+
});
|
|
101
|
+
it('detects definitions and types', () => {
|
|
102
|
+
expect(detectArchitecturalChanges(['src/definitions.ts'])).toBe(true);
|
|
103
|
+
expect(detectArchitecturalChanges(['src/types.ts'])).toBe(true);
|
|
104
|
+
});
|
|
105
|
+
it('detects package files', () => {
|
|
106
|
+
expect(detectArchitecturalChanges(['package.json'])).toBe(true);
|
|
107
|
+
expect(detectArchitecturalChanges(['tsconfig.json'])).toBe(true);
|
|
108
|
+
});
|
|
109
|
+
it('ignores regular source files', () => {
|
|
110
|
+
expect(detectArchitecturalChanges(['src/utils/helper.ts'])).toBe(false);
|
|
111
|
+
expect(detectArchitecturalChanges(['src/components/Button.tsx'])).toBe(false);
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
describe('detectSecurityImplications', () => {
|
|
115
|
+
it('detects auth files', () => {
|
|
116
|
+
expect(detectSecurityImplications(['src/auth/login.ts'])).toBe(true);
|
|
117
|
+
expect(detectSecurityImplications(['lib/auth/jwt.ts'])).toBe(true);
|
|
118
|
+
});
|
|
119
|
+
it('detects security-related paths', () => {
|
|
120
|
+
expect(detectSecurityImplications(['src/security/encrypt.ts'])).toBe(true);
|
|
121
|
+
expect(detectSecurityImplications(['src/permissions.ts'])).toBe(true);
|
|
122
|
+
});
|
|
123
|
+
it('detects credential and secret files', () => {
|
|
124
|
+
expect(detectSecurityImplications(['credentials.json'])).toBe(true);
|
|
125
|
+
expect(detectSecurityImplications(['secrets.ts'])).toBe(true);
|
|
126
|
+
});
|
|
127
|
+
it('detects env files', () => {
|
|
128
|
+
expect(detectSecurityImplications(['.env'])).toBe(true);
|
|
129
|
+
expect(detectSecurityImplications(['.env.local'])).toBe(true);
|
|
130
|
+
});
|
|
131
|
+
it('ignores regular source files', () => {
|
|
132
|
+
expect(detectSecurityImplications(['src/utils/helper.ts'])).toBe(false);
|
|
133
|
+
expect(detectSecurityImplications(['src/components/Button.tsx'])).toBe(false);
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
describe('buildChangeMetadata', () => {
|
|
137
|
+
it('builds metadata with auto-detection', () => {
|
|
138
|
+
const files = ['src/auth/login.ts', 'src/config.ts'];
|
|
139
|
+
const metadata = buildChangeMetadata(files, 100, 'full');
|
|
140
|
+
expect(metadata.filesChanged).toBe(2);
|
|
141
|
+
expect(metadata.linesChanged).toBe(100);
|
|
142
|
+
expect(metadata.hasArchitecturalChanges).toBe(true);
|
|
143
|
+
expect(metadata.hasSecurityImplications).toBe(true);
|
|
144
|
+
expect(metadata.testCoverage).toBe('full');
|
|
145
|
+
});
|
|
146
|
+
it('defaults test coverage to partial', () => {
|
|
147
|
+
const metadata = buildChangeMetadata(['src/util.ts'], 50);
|
|
148
|
+
expect(metadata.testCoverage).toBe('partial');
|
|
149
|
+
});
|
|
150
|
+
});
|
|
151
|
+
describe('boundary values', () => {
|
|
152
|
+
it('returns STANDARD for exactly 5 files with full test coverage', () => {
|
|
153
|
+
const changes = {
|
|
154
|
+
filesChanged: 5,
|
|
155
|
+
linesChanged: 50,
|
|
156
|
+
hasArchitecturalChanges: false,
|
|
157
|
+
hasSecurityImplications: false,
|
|
158
|
+
testCoverage: 'full',
|
|
159
|
+
};
|
|
160
|
+
// 5 files is at the boundary - should NOT qualify for LIGHT (which requires < 5)
|
|
161
|
+
expect(selectVerificationTier(changes)).toBe('STANDARD');
|
|
162
|
+
});
|
|
163
|
+
it('returns STANDARD for exactly 100 lines with full test coverage', () => {
|
|
164
|
+
const changes = {
|
|
165
|
+
filesChanged: 3,
|
|
166
|
+
linesChanged: 100,
|
|
167
|
+
hasArchitecturalChanges: false,
|
|
168
|
+
hasSecurityImplications: false,
|
|
169
|
+
testCoverage: 'full',
|
|
170
|
+
};
|
|
171
|
+
// 100 lines is at the boundary - should NOT qualify for LIGHT (which requires < 100)
|
|
172
|
+
expect(selectVerificationTier(changes)).toBe('STANDARD');
|
|
173
|
+
});
|
|
174
|
+
it('returns THOROUGH for exactly 21 files', () => {
|
|
175
|
+
const changes = {
|
|
176
|
+
filesChanged: 21,
|
|
177
|
+
linesChanged: 100,
|
|
178
|
+
hasArchitecturalChanges: false,
|
|
179
|
+
hasSecurityImplications: false,
|
|
180
|
+
testCoverage: 'full',
|
|
181
|
+
};
|
|
182
|
+
// 21 files exceeds > 20 threshold
|
|
183
|
+
expect(selectVerificationTier(changes)).toBe('THOROUGH');
|
|
184
|
+
});
|
|
185
|
+
it('returns STANDARD for exactly 20 files', () => {
|
|
186
|
+
const changes = {
|
|
187
|
+
filesChanged: 20,
|
|
188
|
+
linesChanged: 100,
|
|
189
|
+
hasArchitecturalChanges: false,
|
|
190
|
+
hasSecurityImplications: false,
|
|
191
|
+
testCoverage: 'full',
|
|
192
|
+
};
|
|
193
|
+
// 20 files does NOT exceed > 20 threshold
|
|
194
|
+
expect(selectVerificationTier(changes)).toBe('STANDARD');
|
|
195
|
+
});
|
|
196
|
+
});
|
|
197
|
+
describe('edge cases', () => {
|
|
198
|
+
it('handles testCoverage: none', () => {
|
|
199
|
+
const changes = {
|
|
200
|
+
filesChanged: 2,
|
|
201
|
+
linesChanged: 50,
|
|
202
|
+
hasArchitecturalChanges: false,
|
|
203
|
+
hasSecurityImplications: false,
|
|
204
|
+
testCoverage: 'none',
|
|
205
|
+
};
|
|
206
|
+
// No test coverage means it can't qualify for LIGHT
|
|
207
|
+
expect(selectVerificationTier(changes)).toBe('STANDARD');
|
|
208
|
+
});
|
|
209
|
+
it('handles empty file list in buildChangeMetadata', () => {
|
|
210
|
+
const metadata = buildChangeMetadata([], 0);
|
|
211
|
+
expect(metadata.filesChanged).toBe(0);
|
|
212
|
+
expect(metadata.linesChanged).toBe(0);
|
|
213
|
+
expect(metadata.hasArchitecturalChanges).toBe(false);
|
|
214
|
+
expect(metadata.hasSecurityImplications).toBe(false);
|
|
215
|
+
});
|
|
216
|
+
it('handles zero files and zero lines', () => {
|
|
217
|
+
const changes = {
|
|
218
|
+
filesChanged: 0,
|
|
219
|
+
linesChanged: 0,
|
|
220
|
+
hasArchitecturalChanges: false,
|
|
221
|
+
hasSecurityImplications: false,
|
|
222
|
+
testCoverage: 'full',
|
|
223
|
+
};
|
|
224
|
+
// 0 files and 0 lines with full coverage qualifies for LIGHT
|
|
225
|
+
expect(selectVerificationTier(changes)).toBe('LIGHT');
|
|
226
|
+
});
|
|
227
|
+
});
|
|
228
|
+
describe('false-positive prevention', () => {
|
|
229
|
+
describe('detectSecurityImplications', () => {
|
|
230
|
+
it('does NOT flag tokenizer.ts as security file', () => {
|
|
231
|
+
expect(detectSecurityImplications(['src/utils/tokenizer.ts'])).toBe(false);
|
|
232
|
+
});
|
|
233
|
+
it('does NOT flag StringTokenizer.ts as security file', () => {
|
|
234
|
+
expect(detectSecurityImplications(['src/lexer/StringTokenizer.ts'])).toBe(false);
|
|
235
|
+
});
|
|
236
|
+
it('does NOT flag secretariat.ts as security file', () => {
|
|
237
|
+
expect(detectSecurityImplications(['src/admin/secretariat.ts'])).toBe(false);
|
|
238
|
+
});
|
|
239
|
+
it('does NOT flag permissionless.ts as security file', () => {
|
|
240
|
+
expect(detectSecurityImplications(['src/blockchain/permissionless.ts'])).toBe(false);
|
|
241
|
+
});
|
|
242
|
+
it('DOES flag auth/token.ts as security file', () => {
|
|
243
|
+
expect(detectSecurityImplications(['src/auth/token.ts'])).toBe(true);
|
|
244
|
+
});
|
|
245
|
+
it('DOES flag secrets.yaml as security file', () => {
|
|
246
|
+
expect(detectSecurityImplications(['config/secrets.yaml'])).toBe(true);
|
|
247
|
+
});
|
|
248
|
+
it('DOES flag .env.local as security file', () => {
|
|
249
|
+
expect(detectSecurityImplications(['.env.local'])).toBe(true);
|
|
250
|
+
});
|
|
251
|
+
it('DOES flag permissions.ts as security file', () => {
|
|
252
|
+
expect(detectSecurityImplications(['src/permissions.ts'])).toBe(true);
|
|
253
|
+
});
|
|
254
|
+
it('DOES flag oauth2.ts as security file', () => {
|
|
255
|
+
expect(detectSecurityImplications(['src/auth/oauth2.ts'])).toBe(true);
|
|
256
|
+
});
|
|
257
|
+
it('DOES flag oauth2-client.ts as security file', () => {
|
|
258
|
+
expect(detectSecurityImplications(['src/oauth2-client.ts'])).toBe(true);
|
|
259
|
+
});
|
|
260
|
+
it('DOES flag jwt_utils.ts as security file', () => {
|
|
261
|
+
expect(detectSecurityImplications(['src/jwt_utils.ts'])).toBe(true);
|
|
262
|
+
});
|
|
263
|
+
});
|
|
264
|
+
describe('detectArchitecturalChanges', () => {
|
|
265
|
+
it('does NOT flag barrel index.ts as architectural', () => {
|
|
266
|
+
expect(detectArchitecturalChanges(['src/components/index.ts'])).toBe(false);
|
|
267
|
+
});
|
|
268
|
+
it('does NOT flag nested barrel index.ts as architectural', () => {
|
|
269
|
+
expect(detectArchitecturalChanges(['src/utils/helpers/index.ts'])).toBe(false);
|
|
270
|
+
});
|
|
271
|
+
it('DOES still flag config.ts as architectural', () => {
|
|
272
|
+
expect(detectArchitecturalChanges(['src/config.ts'])).toBe(true);
|
|
273
|
+
});
|
|
274
|
+
it('DOES still flag package.json as architectural', () => {
|
|
275
|
+
expect(detectArchitecturalChanges(['package.json'])).toBe(true);
|
|
276
|
+
});
|
|
277
|
+
it('DOES still flag tsconfig.json as architectural', () => {
|
|
278
|
+
expect(detectArchitecturalChanges(['tsconfig.json'])).toBe(true);
|
|
279
|
+
});
|
|
280
|
+
});
|
|
281
|
+
});
|
|
282
|
+
//# sourceMappingURL=tier-selector.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tier-selector.test.js","sourceRoot":"","sources":["../../src/verification/tier-selector.test.ts"],"names":[],"mappings":"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"}
|
package/docs/AGENTS.md
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
<!-- Parent: ../AGENTS.md -->
|
|
2
|
+
<!-- Generated: 2026-01-31 | Updated: 2026-01-31 -->
|
|
3
|
+
|
|
4
|
+
# docs
|
|
5
|
+
|
|
6
|
+
User documentation and technical guides for oh-my-claudecode.
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
This directory contains documentation for end-users and developers:
|
|
11
|
+
|
|
12
|
+
- **End-user guides**: How to use oh-my-claudecode features
|
|
13
|
+
- **Technical reference**: Architecture, compatibility, migration
|
|
14
|
+
- **Design documents**: Feature design specifications
|
|
15
|
+
|
|
16
|
+
## Key Files
|
|
17
|
+
|
|
18
|
+
| File | Description |
|
|
19
|
+
|------|-------------|
|
|
20
|
+
| `CLAUDE.md` | End-user orchestration instructions (installed to user projects) |
|
|
21
|
+
| `FEATURES.md` | Developer API reference for internal features |
|
|
22
|
+
| `REFERENCE.md` | API reference and configuration options |
|
|
23
|
+
| `ARCHITECTURE.md` | System architecture overview |
|
|
24
|
+
| `MIGRATION.md` | Version migration guides |
|
|
25
|
+
| `COMPATIBILITY.md` | Compatibility matrix and requirements |
|
|
26
|
+
| `TIERED_AGENTS_V2.md` | Model routing and tiered agent design |
|
|
27
|
+
| `DELEGATION-ENFORCER.md` | Delegation protocol documentation |
|
|
28
|
+
| `SYNC-SYSTEM.md` | State synchronization system |
|
|
29
|
+
| `ANALYTICS-SYSTEM.md` | Analytics collection documentation |
|
|
30
|
+
| `LOCAL_PLUGIN_INSTALL.md` | Plugin installation guide |
|
|
31
|
+
|
|
32
|
+
## Subdirectories
|
|
33
|
+
|
|
34
|
+
| Directory | Purpose |
|
|
35
|
+
|-----------|---------|
|
|
36
|
+
| `design/` | Feature design specifications |
|
|
37
|
+
|
|
38
|
+
## For AI Agents
|
|
39
|
+
|
|
40
|
+
### Working In This Directory
|
|
41
|
+
|
|
42
|
+
1. **End-User Focus**: CLAUDE.md is installed to user projects - write for end-users, not developers
|
|
43
|
+
2. **Keep Links Accessible**: Use raw GitHub URLs for links in CLAUDE.md (agents can't navigate GitHub UI)
|
|
44
|
+
3. **Version Consistency**: Update version numbers across all docs when releasing
|
|
45
|
+
|
|
46
|
+
### When to Update Each File
|
|
47
|
+
|
|
48
|
+
| Trigger | File to Update |
|
|
49
|
+
|---------|---------------|
|
|
50
|
+
| Agent count or list changes | `REFERENCE.md` (Agents section) |
|
|
51
|
+
| Skill count or list changes | `REFERENCE.md` (Skills section) |
|
|
52
|
+
| Hook count or list changes | `REFERENCE.md` (Hooks System section) |
|
|
53
|
+
| Magic keywords change | `REFERENCE.md` (Magic Keywords section) |
|
|
54
|
+
| Agent tool assignments change | `CLAUDE.md` (Agent Tool Matrix) |
|
|
55
|
+
| Skill composition or architecture changes | `ARCHITECTURE.md` |
|
|
56
|
+
| New internal API or feature | `FEATURES.md` |
|
|
57
|
+
| Breaking changes or migrations | `MIGRATION.md` |
|
|
58
|
+
| Tiered agent design updates | `TIERED_AGENTS_V2.md` |
|
|
59
|
+
| Platform or version support changes | `COMPATIBILITY.md` |
|
|
60
|
+
| End-user instructions change | `CLAUDE.md` |
|
|
61
|
+
| Major user-facing features | `../README.md` |
|
|
62
|
+
|
|
63
|
+
### Testing Requirements
|
|
64
|
+
|
|
65
|
+
- Verify markdown renders correctly
|
|
66
|
+
- Check all internal links resolve
|
|
67
|
+
- Validate code examples in documentation
|
|
68
|
+
|
|
69
|
+
### Common Patterns
|
|
70
|
+
|
|
71
|
+
#### Linking to Raw Content
|
|
72
|
+
|
|
73
|
+
Use raw GitHub URLs for external accessibility:
|
|
74
|
+
|
|
75
|
+
[Migration Guide](https://raw.githubusercontent.com/Yeachan-Heo/oh-my-claudecode/main/docs/MIGRATION.md)
|
|
76
|
+
|
|
77
|
+
#### Version References
|
|
78
|
+
|
|
79
|
+
Use consistent version heading format with blank line after heading:
|
|
80
|
+
|
|
81
|
+
```markdown
|
|
82
|
+
## v3.8.17 Changes
|
|
83
|
+
|
|
84
|
+
- Feature A
|
|
85
|
+
- Feature B
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Dependencies
|
|
89
|
+
|
|
90
|
+
### Internal
|
|
91
|
+
|
|
92
|
+
- References agents from `agents/`
|
|
93
|
+
- References skills from `skills/`
|
|
94
|
+
- References tools from `src/tools/`
|
|
95
|
+
|
|
96
|
+
### External
|
|
97
|
+
|
|
98
|
+
None - pure markdown files.
|
|
99
|
+
|
|
100
|
+
<!-- MANUAL: -->
|
package/docs/ARCHITECTURE.md
CHANGED
|
@@ -62,7 +62,7 @@ Skills: ultrawork + default + git-master
|
|
|
62
62
|
| MEDIUM | Sonnet | Standard implementations |
|
|
63
63
|
| HIGH | Opus | Complex reasoning, architecture |
|
|
64
64
|
|
|
65
|
-
See [
|
|
65
|
+
See [REFERENCE.md](./REFERENCE.md) for the complete agent roster.
|
|
66
66
|
|
|
67
67
|
### Delegation
|
|
68
68
|
|
|
@@ -118,13 +118,16 @@ Legacy locations are auto-migrated on read.
|
|
|
118
118
|
|
|
119
119
|
## Hooks
|
|
120
120
|
|
|
121
|
-
oh-my-claudecode
|
|
121
|
+
oh-my-claudecode includes 31 hooks in `src/hooks/` for lifecycle events:
|
|
122
122
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
123
|
+
| Event | Purpose |
|
|
124
|
+
|-------|---------|
|
|
125
|
+
| `UserPromptSubmit` | Keyword detection, mode activation |
|
|
126
|
+
| `Stop` | Continuation enforcement, session end |
|
|
127
|
+
| `PreToolUse` | Permission validation |
|
|
128
|
+
| `PostToolUse` | Error recovery, rules injection |
|
|
126
129
|
|
|
127
|
-
|
|
130
|
+
See [REFERENCE.md](./REFERENCE.md) for the complete hooks list.
|
|
128
131
|
|
|
129
132
|
## Verification Protocol
|
|
130
133
|
|
|
@@ -143,6 +146,7 @@ Evidence must be fresh (within 5 minutes) and include actual command output.
|
|
|
143
146
|
|
|
144
147
|
## For More Details
|
|
145
148
|
|
|
146
|
-
- **
|
|
149
|
+
- **Complete Reference**: See [REFERENCE.md](./REFERENCE.md)
|
|
150
|
+
- **Internal API**: See [FEATURES.md](./FEATURES.md)
|
|
147
151
|
- **User Guide**: See [README.md](../README.md)
|
|
148
152
|
- **Skills Reference**: See CLAUDE.md in your project
|