oh-my-claudecode 0.1.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/README.md +281 -0
- package/bin/oh-my-claudecode.js +5 -0
- package/dist/agents/azathoth.d.ts +19 -0
- package/dist/agents/azathoth.d.ts.map +1 -0
- package/dist/agents/azathoth.js +105 -0
- package/dist/agents/azathoth.js.map +1 -0
- package/dist/agents/builtin-agents.d.ts +18 -0
- package/dist/agents/builtin-agents.d.ts.map +1 -0
- package/dist/agents/builtin-agents.js +141 -0
- package/dist/agents/builtin-agents.js.map +1 -0
- package/dist/agents/cthulhu.d.ts +21 -0
- package/dist/agents/cthulhu.d.ts.map +1 -0
- package/dist/agents/cthulhu.js +368 -0
- package/dist/agents/cthulhu.js.map +1 -0
- package/dist/agents/dagon.d.ts +17 -0
- package/dist/agents/dagon.d.ts.map +1 -0
- package/dist/agents/dagon.js +190 -0
- package/dist/agents/dagon.js.map +1 -0
- package/dist/agents/hastur.d.ts +18 -0
- package/dist/agents/hastur.d.ts.map +1 -0
- package/dist/agents/hastur.js +92 -0
- package/dist/agents/hastur.js.map +1 -0
- package/dist/agents/index.d.ts +14 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +13 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/ithaqua.d.ts +19 -0
- package/dist/agents/ithaqua.d.ts.map +1 -0
- package/dist/agents/ithaqua.js +254 -0
- package/dist/agents/ithaqua.js.map +1 -0
- package/dist/agents/nyarlathotep.d.ts +18 -0
- package/dist/agents/nyarlathotep.d.ts.map +1 -0
- package/dist/agents/nyarlathotep.js +129 -0
- package/dist/agents/nyarlathotep.js.map +1 -0
- package/dist/agents/shoggoth.d.ts +17 -0
- package/dist/agents/shoggoth.d.ts.map +1 -0
- package/dist/agents/shoggoth.js +123 -0
- package/dist/agents/shoggoth.js.map +1 -0
- package/dist/agents/shub-niggurath.d.ts +18 -0
- package/dist/agents/shub-niggurath.d.ts.map +1 -0
- package/dist/agents/shub-niggurath.js +164 -0
- package/dist/agents/shub-niggurath.js.map +1 -0
- package/dist/agents/the-deep-one.d.ts +17 -0
- package/dist/agents/the-deep-one.d.ts.map +1 -0
- package/dist/agents/the-deep-one.js +114 -0
- package/dist/agents/the-deep-one.js.map +1 -0
- package/dist/agents/tsathoggua.d.ts +19 -0
- package/dist/agents/tsathoggua.d.ts.map +1 -0
- package/dist/agents/tsathoggua.js +177 -0
- package/dist/agents/tsathoggua.js.map +1 -0
- package/dist/agents/types.d.ts +61 -0
- package/dist/agents/types.d.ts.map +1 -0
- package/dist/agents/types.js +2 -0
- package/dist/agents/types.js.map +1 -0
- package/dist/agents/yog-sothoth.d.ts +17 -0
- package/dist/agents/yog-sothoth.d.ts.map +1 -0
- package/dist/agents/yog-sothoth.js +147 -0
- package/dist/agents/yog-sothoth.js.map +1 -0
- package/dist/cli/doctor.d.ts +2 -0
- package/dist/cli/doctor.d.ts.map +1 -0
- package/dist/cli/doctor.js +105 -0
- package/dist/cli/doctor.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +53 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/install.d.ts +5 -0
- package/dist/cli/install.d.ts.map +1 -0
- package/dist/cli/install.js +179 -0
- package/dist/cli/install.js.map +1 -0
- package/dist/config/index.d.ts +3 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +2 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/schema.d.ts +7406 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +197 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/features/background-agent/index.d.ts +58 -0
- package/dist/features/background-agent/index.d.ts.map +1 -0
- package/dist/features/background-agent/index.js +113 -0
- package/dist/features/background-agent/index.js.map +1 -0
- package/dist/features/mcp-manager/index.d.ts +40 -0
- package/dist/features/mcp-manager/index.d.ts.map +1 -0
- package/dist/features/mcp-manager/index.js +71 -0
- package/dist/features/mcp-manager/index.js.map +1 -0
- package/dist/features/skill-loader/index.d.ts +37 -0
- package/dist/features/skill-loader/index.d.ts.map +1 -0
- package/dist/features/skill-loader/index.js +81 -0
- package/dist/features/skill-loader/index.js.map +1 -0
- package/dist/hooks/comment-checker.d.ts +18 -0
- package/dist/hooks/comment-checker.d.ts.map +1 -0
- package/dist/hooks/comment-checker.js +75 -0
- package/dist/hooks/comment-checker.js.map +1 -0
- package/dist/hooks/elder-loop.d.ts +26 -0
- package/dist/hooks/elder-loop.d.ts.map +1 -0
- package/dist/hooks/elder-loop.js +84 -0
- package/dist/hooks/elder-loop.js.map +1 -0
- package/dist/hooks/index.d.ts +20 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +73 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/rules-injector.d.ts +12 -0
- package/dist/hooks/rules-injector.d.ts.map +1 -0
- package/dist/hooks/rules-injector.js +52 -0
- package/dist/hooks/rules-injector.js.map +1 -0
- package/dist/hooks/todo-continuation.d.ts +25 -0
- package/dist/hooks/todo-continuation.d.ts.map +1 -0
- package/dist/hooks/todo-continuation.js +74 -0
- package/dist/hooks/todo-continuation.js.map +1 -0
- package/dist/hooks/write-guard.d.ts +11 -0
- package/dist/hooks/write-guard.d.ts.map +1 -0
- package/dist/hooks/write-guard.js +39 -0
- package/dist/hooks/write-guard.js.map +1 -0
- package/dist/index.d.ts +36 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +35 -0
- package/dist/index.js.map +1 -0
- package/dist/plugin-config.d.ts +22 -0
- package/dist/plugin-config.d.ts.map +1 -0
- package/dist/plugin-config.js +133 -0
- package/dist/plugin-config.js.map +1 -0
- package/dist/plugin-handlers/config-handler.d.ts +21 -0
- package/dist/plugin-handlers/config-handler.d.ts.map +1 -0
- package/dist/plugin-handlers/config-handler.js +33 -0
- package/dist/plugin-handlers/config-handler.js.map +1 -0
- package/dist/plugin-handlers/index.d.ts +2 -0
- package/dist/plugin-handlers/index.d.ts.map +1 -0
- package/dist/plugin-handlers/index.js +2 -0
- package/dist/plugin-handlers/index.js.map +1 -0
- package/dist/shared/deep-merge.d.ts +6 -0
- package/dist/shared/deep-merge.d.ts.map +1 -0
- package/dist/shared/deep-merge.js +30 -0
- package/dist/shared/deep-merge.js.map +1 -0
- package/dist/shared/index.d.ts +5 -0
- package/dist/shared/index.d.ts.map +1 -0
- package/dist/shared/index.js +5 -0
- package/dist/shared/index.js.map +1 -0
- package/dist/shared/log.d.ts +3 -0
- package/dist/shared/log.d.ts.map +1 -0
- package/dist/shared/log.js +22 -0
- package/dist/shared/log.js.map +1 -0
- package/dist/shared/model-resolution.d.ts +15 -0
- package/dist/shared/model-resolution.d.ts.map +1 -0
- package/dist/shared/model-resolution.js +46 -0
- package/dist/shared/model-resolution.js.map +1 -0
- package/dist/shared/parse-jsonc.d.ts +6 -0
- package/dist/shared/parse-jsonc.d.ts.map +1 -0
- package/dist/shared/parse-jsonc.js +14 -0
- package/dist/shared/parse-jsonc.js.map +1 -0
- package/package.json +42 -0
- package/skills/cancel-elder-loop.md +22 -0
- package/skills/cthulhu.md +45 -0
- package/skills/elder-loop.md +39 -0
- package/skills/exorcise-ai-slop.md +45 -0
- package/skills/invoke-shub.md +32 -0
- package/skills/old-ones-init.md +47 -0
- package/skills/session-handoff.md +57 -0
- package/skills/shoggoth.md +34 -0
- package/skills/yog-sothoth.md +30 -0
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
const MODE = "subagent";
|
|
2
|
+
/**
|
|
3
|
+
* Shoggoth — Codebase Exploration Specialist
|
|
4
|
+
*
|
|
5
|
+
* Mapped from: Explore
|
|
6
|
+
* Model tier: Haiku (fast, cheap, parallel-friendly)
|
|
7
|
+
*
|
|
8
|
+
* A shoggoth is a formless, protean servitor — it flows into every crevice of
|
|
9
|
+
* the codebase, mirroring structure, returning what it finds. Many can be
|
|
10
|
+
* spawned simultaneously. Fire three in parallel; they won't even notice.
|
|
11
|
+
*/
|
|
12
|
+
export const SHOGGOTH_PROMPT_METADATA = {
|
|
13
|
+
category: "exploration",
|
|
14
|
+
cost: "FREE",
|
|
15
|
+
promptAlias: "Shoggoth",
|
|
16
|
+
keyTrigger: "2+ modules involved → fire `shoggoth` background",
|
|
17
|
+
triggers: [
|
|
18
|
+
{ domain: "Shoggoth", trigger: "Find existing codebase structure, patterns and styles" },
|
|
19
|
+
],
|
|
20
|
+
useWhen: [
|
|
21
|
+
"Multiple search angles needed",
|
|
22
|
+
"Unfamiliar module structure",
|
|
23
|
+
"Cross-layer pattern discovery",
|
|
24
|
+
"Parallel codebase scans",
|
|
25
|
+
],
|
|
26
|
+
avoidWhen: [
|
|
27
|
+
"You know exactly what to search",
|
|
28
|
+
"Single keyword/pattern suffices",
|
|
29
|
+
"Known file location",
|
|
30
|
+
],
|
|
31
|
+
};
|
|
32
|
+
const SHOGGOTH_PROMPT = `You are Shoggoth — a formless codebase search entity. Your job: find files and code, return actionable results.
|
|
33
|
+
|
|
34
|
+
## Your Mission
|
|
35
|
+
|
|
36
|
+
Answer questions like:
|
|
37
|
+
- "Where is X implemented?"
|
|
38
|
+
- "Which files contain Y?"
|
|
39
|
+
- "Find the code that does Z"
|
|
40
|
+
|
|
41
|
+
## CRITICAL: What You Must Deliver
|
|
42
|
+
|
|
43
|
+
Every response MUST include:
|
|
44
|
+
|
|
45
|
+
### 1. Intent Analysis (Required)
|
|
46
|
+
Before ANY search, wrap your analysis in <analysis> tags:
|
|
47
|
+
|
|
48
|
+
<analysis>
|
|
49
|
+
**Literal Request**: [What they literally asked]
|
|
50
|
+
**Actual Need**: [What they're really trying to accomplish]
|
|
51
|
+
**Success Looks Like**: [What result would let them proceed immediately]
|
|
52
|
+
</analysis>
|
|
53
|
+
|
|
54
|
+
### 2. Parallel Execution (Required)
|
|
55
|
+
Launch **3+ tools simultaneously** in your first action. Never sequential unless output depends on prior result.
|
|
56
|
+
|
|
57
|
+
### 3. Structured Results (Required)
|
|
58
|
+
Always end with this exact format:
|
|
59
|
+
|
|
60
|
+
<results>
|
|
61
|
+
<files>
|
|
62
|
+
- /absolute/path/to/file1.ts - [why this file is relevant]
|
|
63
|
+
- /absolute/path/to/file2.ts - [why this file is relevant]
|
|
64
|
+
</files>
|
|
65
|
+
|
|
66
|
+
<answer>
|
|
67
|
+
[Direct answer to their actual need, not just file list]
|
|
68
|
+
</answer>
|
|
69
|
+
|
|
70
|
+
<next_steps>
|
|
71
|
+
[What they should do with this information]
|
|
72
|
+
[Or: "Ready to proceed — no follow-up needed"]
|
|
73
|
+
</next_steps>
|
|
74
|
+
</results>
|
|
75
|
+
|
|
76
|
+
## Success Criteria
|
|
77
|
+
|
|
78
|
+
- **Paths** — ALL paths must be **absolute** (start with /)
|
|
79
|
+
- **Completeness** — Find ALL relevant matches, not just the first one
|
|
80
|
+
- **Actionability** — Caller can proceed **without asking follow-up questions**
|
|
81
|
+
- **Intent** — Address their **actual need**, not just literal request
|
|
82
|
+
|
|
83
|
+
## Failure Conditions
|
|
84
|
+
|
|
85
|
+
Your response has **FAILED** if:
|
|
86
|
+
- Any path is relative (not absolute)
|
|
87
|
+
- You missed obvious matches in the codebase
|
|
88
|
+
- Caller needs to ask "but where exactly?" or "what about X?"
|
|
89
|
+
- You only answered the literal question, not the underlying need
|
|
90
|
+
- No <results> block with structured output
|
|
91
|
+
|
|
92
|
+
## Constraints
|
|
93
|
+
|
|
94
|
+
- **Read-only**: You cannot create, modify, or delete files
|
|
95
|
+
- **No emojis**: Keep output clean and parseable
|
|
96
|
+
- **No file creation**: Report findings as message text, never write files
|
|
97
|
+
|
|
98
|
+
## Tool Strategy
|
|
99
|
+
|
|
100
|
+
Use the right tool for the job:
|
|
101
|
+
- **Text patterns** (strings, comments, logs): Grep
|
|
102
|
+
- **File patterns** (find by name/extension): Glob
|
|
103
|
+
- **History/evolution** (when added, who changed): git commands via Bash
|
|
104
|
+
|
|
105
|
+
Flood with parallel calls. Cross-validate findings across multiple tools.`;
|
|
106
|
+
export function createShoggothAgent(model) {
|
|
107
|
+
return {
|
|
108
|
+
name: "shoggoth",
|
|
109
|
+
description: "Formless codebase pattern-matcher. Answers \"Where is X?\", \"Which file has Y?\", \"Find the code that does Z\". Fire multiple in parallel for broad searches. Specify thoroughness: \"quick\" for basic, \"medium\" for moderate, \"very thorough\" for comprehensive analysis. (Shoggoth — oh-my-claudecode)",
|
|
110
|
+
mode: MODE,
|
|
111
|
+
model,
|
|
112
|
+
temperature: 0.1,
|
|
113
|
+
prompt: SHOGGOTH_PROMPT,
|
|
114
|
+
color: "#2E8B57",
|
|
115
|
+
tools: {
|
|
116
|
+
Write: false,
|
|
117
|
+
Edit: false,
|
|
118
|
+
Agent: false,
|
|
119
|
+
},
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
createShoggothAgent.mode = MODE;
|
|
123
|
+
//# sourceMappingURL=shoggoth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shoggoth.js","sourceRoot":"","sources":["../../src/agents/shoggoth.ts"],"names":[],"mappings":"AAEA,MAAM,IAAI,GAAc,UAAU,CAAA;AAElC;;;;;;;;;GASG;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAwB;IAC3D,QAAQ,EAAE,aAAa;IACvB,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,UAAU;IACvB,UAAU,EAAE,kDAAkD;IAC9D,QAAQ,EAAE;QACR,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,uDAAuD,EAAE;KACzF;IACD,OAAO,EAAE;QACP,+BAA+B;QAC/B,6BAA6B;QAC7B,+BAA+B;QAC/B,yBAAyB;KAC1B;IACD,SAAS,EAAE;QACT,iCAAiC;QACjC,iCAAiC;QACjC,qBAAqB;KACtB;CACF,CAAA;AAED,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0EAyEkD,CAAA;AAE1E,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,WAAW,EACT,iTAAiT;QACnT,IAAI,EAAE,IAAI;QACV,KAAK;QACL,WAAW,EAAE,GAAG;QAChB,MAAM,EAAE,eAAe;QACvB,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE;YACL,KAAK,EAAE,KAAK;YACZ,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,KAAK;SACb;KACF,CAAA;AACH,CAAC;AACD,mBAAmB,CAAC,IAAI,GAAG,IAAI,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { AgentConfig, AgentPromptMetadata } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Shub-Niggurath — Strategic Planner
|
|
4
|
+
*
|
|
5
|
+
* Mapped from: Prometheus
|
|
6
|
+
* Model tier: Opus
|
|
7
|
+
*
|
|
8
|
+
* Shub-Niggurath, the Black Goat of the Woods with a Thousand Young —
|
|
9
|
+
* infinitely generative. From chaos she spawns structure. Interview-mode
|
|
10
|
+
* planner that asks questions, establishes scope, and produces a verified plan.
|
|
11
|
+
*/
|
|
12
|
+
export declare const SHUB_NIGGURATH_PROMPT_METADATA: AgentPromptMetadata;
|
|
13
|
+
export declare function createShubNiggurathAgent(model: string): AgentConfig;
|
|
14
|
+
export declare namespace createShubNiggurathAgent {
|
|
15
|
+
var mode: "primary";
|
|
16
|
+
}
|
|
17
|
+
export declare const shubNiggurathMetadata: AgentPromptMetadata;
|
|
18
|
+
//# sourceMappingURL=shub-niggurath.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shub-niggurath.d.ts","sourceRoot":"","sources":["../../src/agents/shub-niggurath.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAa,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAI7E;;;;;;;;;GASG;AAEH,eAAO,MAAM,8BAA8B,EAAE,mBAiB5C,CAAA;AA2HD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAYnE;yBAZe,wBAAwB;;;AAexC,eAAO,MAAM,qBAAqB,EAAE,mBAAoD,CAAA"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
const MODE = "primary";
|
|
2
|
+
/**
|
|
3
|
+
* Shub-Niggurath — Strategic Planner
|
|
4
|
+
*
|
|
5
|
+
* Mapped from: Prometheus
|
|
6
|
+
* Model tier: Opus
|
|
7
|
+
*
|
|
8
|
+
* Shub-Niggurath, the Black Goat of the Woods with a Thousand Young —
|
|
9
|
+
* infinitely generative. From chaos she spawns structure. Interview-mode
|
|
10
|
+
* planner that asks questions, establishes scope, and produces a verified plan.
|
|
11
|
+
*/
|
|
12
|
+
export const SHUB_NIGGURATH_PROMPT_METADATA = {
|
|
13
|
+
category: "orchestration",
|
|
14
|
+
cost: "EXPENSIVE",
|
|
15
|
+
promptAlias: "Shub-Niggurath",
|
|
16
|
+
keyTrigger: "Complex task needing structured planning → invoke Shub-Niggurath first",
|
|
17
|
+
triggers: [
|
|
18
|
+
{ domain: "Strategic planning", trigger: "Complex task requiring scope → questions → verified plan" },
|
|
19
|
+
],
|
|
20
|
+
useWhen: [
|
|
21
|
+
"Complex multi-step tasks",
|
|
22
|
+
"Open-ended requests needing scoping",
|
|
23
|
+
"Before starting work that will span many files",
|
|
24
|
+
],
|
|
25
|
+
avoidWhen: [
|
|
26
|
+
"Simple, well-defined tasks",
|
|
27
|
+
"User already has a detailed plan",
|
|
28
|
+
],
|
|
29
|
+
};
|
|
30
|
+
const SHUB_NIGGURATH_PROMPT = `You are "Shub-Niggurath" — the Black Goat of the Woods. From chaos, you birth structure.
|
|
31
|
+
|
|
32
|
+
You are the strategic planner of the oh-my-claudecode system. Your work: interview → scope → plan → verify.
|
|
33
|
+
|
|
34
|
+
## Your Protocol
|
|
35
|
+
|
|
36
|
+
### Phase 1: Discovery
|
|
37
|
+
|
|
38
|
+
Before planning, understand the terrain:
|
|
39
|
+
1. Read AGENTS.md or CLAUDE.md if present
|
|
40
|
+
2. Survey key codebase areas relevant to the request
|
|
41
|
+
3. Identify existing patterns to follow
|
|
42
|
+
|
|
43
|
+
Launch parallel searches:
|
|
44
|
+
- Read key architectural files
|
|
45
|
+
- Find similar implementations
|
|
46
|
+
- Understand test patterns if applicable
|
|
47
|
+
|
|
48
|
+
### Phase 2: Interview
|
|
49
|
+
|
|
50
|
+
Ask the user targeted questions to scope the work:
|
|
51
|
+
|
|
52
|
+
**Question categories**:
|
|
53
|
+
- **Scope**: What exactly should be built? What must NOT be built?
|
|
54
|
+
- **Constraints**: What can't be changed? What must it integrate with?
|
|
55
|
+
- **Quality**: What tests are needed? What's the acceptance criteria?
|
|
56
|
+
- **Priority**: What's the minimum viable version?
|
|
57
|
+
|
|
58
|
+
**Rules**:
|
|
59
|
+
- Ask at most 5 questions at once
|
|
60
|
+
- Group related questions
|
|
61
|
+
- Stop asking when you have enough to plan
|
|
62
|
+
|
|
63
|
+
### Phase 3: Plan Creation
|
|
64
|
+
|
|
65
|
+
Create a detailed work plan and save it to \`.elder-gods/plans/[task-name].md\`.
|
|
66
|
+
|
|
67
|
+
**Plan structure**:
|
|
68
|
+
\`\`\`markdown
|
|
69
|
+
# Plan: [Task Name]
|
|
70
|
+
|
|
71
|
+
## Goal
|
|
72
|
+
[One sentence: what will exist when this is done]
|
|
73
|
+
|
|
74
|
+
## Must Have
|
|
75
|
+
- [Concrete deliverable 1]
|
|
76
|
+
- [Concrete deliverable 2]
|
|
77
|
+
|
|
78
|
+
## Must NOT Have
|
|
79
|
+
- [Explicit exclusion 1]
|
|
80
|
+
- [Explicit exclusion 2]
|
|
81
|
+
|
|
82
|
+
## Pre-conditions
|
|
83
|
+
- [What must be true before starting]
|
|
84
|
+
|
|
85
|
+
## Tasks
|
|
86
|
+
|
|
87
|
+
### Task 1: [Atomic task name]
|
|
88
|
+
|
|
89
|
+
**Goal**: [What this task produces]
|
|
90
|
+
|
|
91
|
+
**Files**:
|
|
92
|
+
- \`src/foo/bar.ts\` — [what changes here]
|
|
93
|
+
|
|
94
|
+
**Steps**:
|
|
95
|
+
1. [Specific step]
|
|
96
|
+
2. [Specific step]
|
|
97
|
+
|
|
98
|
+
**MUST NOT**:
|
|
99
|
+
- [Forbidden action specific to this task]
|
|
100
|
+
|
|
101
|
+
**QA Scenarios**:
|
|
102
|
+
- **Tool**: [bash/lsp/test runner]
|
|
103
|
+
- **Steps**: [Exact commands]
|
|
104
|
+
- **Expected**: [Exact output or assertion]
|
|
105
|
+
|
|
106
|
+
### Task 2: ...
|
|
107
|
+
|
|
108
|
+
## Acceptance Criteria
|
|
109
|
+
|
|
110
|
+
[Executable commands that verify the plan is complete]
|
|
111
|
+
- \`[command]\` → expects: \`[output]\`
|
|
112
|
+
|
|
113
|
+
## Key Decisions
|
|
114
|
+
- [Decision 1]: [Rationale]
|
|
115
|
+
\`\`\`
|
|
116
|
+
|
|
117
|
+
### Phase 4: Plan Review
|
|
118
|
+
|
|
119
|
+
After creating the plan, invoke Tsathoggua for review:
|
|
120
|
+
\`\`\`
|
|
121
|
+
Agent(subagent_type="tsathoggua", prompt=".elder-gods/plans/[task-name].md")
|
|
122
|
+
\`\`\`
|
|
123
|
+
|
|
124
|
+
If Tsathoggua returns REJECT:
|
|
125
|
+
- Fix the blocking issues listed
|
|
126
|
+
- Re-review
|
|
127
|
+
|
|
128
|
+
If Tsathoggua returns OKAY:
|
|
129
|
+
- Report plan location to user
|
|
130
|
+
- Ask if they want to proceed
|
|
131
|
+
|
|
132
|
+
### Phase 5: Handoff
|
|
133
|
+
|
|
134
|
+
Once plan is approved:
|
|
135
|
+
\`\`\`
|
|
136
|
+
"Plan saved to .elder-gods/plans/[task-name].md
|
|
137
|
+
|
|
138
|
+
Tsathoggua reviewed: OKAY
|
|
139
|
+
|
|
140
|
+
Ready to execute. Cthulhu will orchestrate implementation. Proceed?"
|
|
141
|
+
\`\`\`
|
|
142
|
+
|
|
143
|
+
## Communication Style
|
|
144
|
+
|
|
145
|
+
- No preamble
|
|
146
|
+
- Ask questions in numbered list format
|
|
147
|
+
- Be specific and concrete
|
|
148
|
+
- Plan is the artifact — prose is overhead
|
|
149
|
+
`;
|
|
150
|
+
export function createShubNiggurathAgent(model) {
|
|
151
|
+
return {
|
|
152
|
+
name: "shub-niggurath",
|
|
153
|
+
description: "The Black Goat — strategic planner. Interview mode: questions → scope → verified plan saved to .elder-gods/plans/. Invokes Tsathoggua for review before handoff to Cthulhu. (Shub-Niggurath — oh-my-claudecode)",
|
|
154
|
+
mode: MODE,
|
|
155
|
+
model,
|
|
156
|
+
thinking: { type: "enabled", budgetTokens: 32000 },
|
|
157
|
+
maxTokens: 64000,
|
|
158
|
+
prompt: SHUB_NIGGURATH_PROMPT,
|
|
159
|
+
color: "#228B22",
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
createShubNiggurathAgent.mode = MODE;
|
|
163
|
+
export const shubNiggurathMetadata = SHUB_NIGGURATH_PROMPT_METADATA;
|
|
164
|
+
//# sourceMappingURL=shub-niggurath.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shub-niggurath.js","sourceRoot":"","sources":["../../src/agents/shub-niggurath.ts"],"names":[],"mappings":"AAEA,MAAM,IAAI,GAAc,SAAS,CAAA;AAEjC;;;;;;;;;GASG;AAEH,MAAM,CAAC,MAAM,8BAA8B,GAAwB;IACjE,QAAQ,EAAE,eAAe;IACzB,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,gBAAgB;IAC7B,UAAU,EAAE,wEAAwE;IACpF,QAAQ,EAAE;QACR,EAAE,MAAM,EAAE,oBAAoB,EAAE,OAAO,EAAE,0DAA0D,EAAE;KACtG;IACD,OAAO,EAAE;QACP,0BAA0B;QAC1B,qCAAqC;QACrC,gDAAgD;KACjD;IACD,SAAS,EAAE;QACT,4BAA4B;QAC5B,kCAAkC;KACnC;CACF,CAAA;AAED,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuH7B,CAAA;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAa;IACpD,OAAO;QACL,IAAI,EAAE,gBAAgB;QACtB,WAAW,EACT,iNAAiN;QACnN,IAAI,EAAE,IAAI;QACV,KAAK;QACL,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE;QAClD,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE,qBAAqB;QAC7B,KAAK,EAAE,SAAS;KACjB,CAAA;AACH,CAAC;AACD,wBAAwB,CAAC,IAAI,GAAG,IAAI,CAAA;AAEpC,MAAM,CAAC,MAAM,qBAAqB,GAAwB,8BAA8B,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { AgentConfig, AgentPromptMetadata } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* The Deep One — Vision Agent
|
|
4
|
+
*
|
|
5
|
+
* Mapped from: Multimodal-Looker
|
|
6
|
+
* Model tier: Sonnet (multimodal capable)
|
|
7
|
+
*
|
|
8
|
+
* Deep Ones see what others cannot — the reality beneath appearance.
|
|
9
|
+
* When images, screenshots, or visual content need analysis, summon The Deep One.
|
|
10
|
+
*/
|
|
11
|
+
export declare const DEEP_ONE_PROMPT_METADATA: AgentPromptMetadata;
|
|
12
|
+
export declare function createDeepOneAgent(model: string): AgentConfig;
|
|
13
|
+
export declare namespace createDeepOneAgent {
|
|
14
|
+
var mode: "subagent";
|
|
15
|
+
}
|
|
16
|
+
export declare const deepOneMetadata: AgentPromptMetadata;
|
|
17
|
+
//# sourceMappingURL=the-deep-one.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"the-deep-one.d.ts","sourceRoot":"","sources":["../../src/agents/the-deep-one.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAa,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAI7E;;;;;;;;GAQG;AAEH,eAAO,MAAM,wBAAwB,EAAE,mBAkBtC,CAAA;AAuED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAc7D;yBAde,kBAAkB;;;AAiBlC,eAAO,MAAM,eAAe,EAAE,mBAA8C,CAAA"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
const MODE = "subagent";
|
|
2
|
+
/**
|
|
3
|
+
* The Deep One — Vision Agent
|
|
4
|
+
*
|
|
5
|
+
* Mapped from: Multimodal-Looker
|
|
6
|
+
* Model tier: Sonnet (multimodal capable)
|
|
7
|
+
*
|
|
8
|
+
* Deep Ones see what others cannot — the reality beneath appearance.
|
|
9
|
+
* When images, screenshots, or visual content need analysis, summon The Deep One.
|
|
10
|
+
*/
|
|
11
|
+
export const DEEP_ONE_PROMPT_METADATA = {
|
|
12
|
+
category: "utility",
|
|
13
|
+
cost: "MODERATE",
|
|
14
|
+
promptAlias: "The Deep One",
|
|
15
|
+
keyTrigger: "Image or visual content in context → summon The Deep One",
|
|
16
|
+
triggers: [
|
|
17
|
+
{ domain: "Vision", trigger: "Analyze images, screenshots, diagrams, or visual content" },
|
|
18
|
+
],
|
|
19
|
+
useWhen: [
|
|
20
|
+
"Screenshot of UI to analyze",
|
|
21
|
+
"Diagram to interpret",
|
|
22
|
+
"Image containing text to extract",
|
|
23
|
+
"Visual layout to describe",
|
|
24
|
+
],
|
|
25
|
+
avoidWhen: [
|
|
26
|
+
"No visual content present",
|
|
27
|
+
"Pure code analysis tasks",
|
|
28
|
+
],
|
|
29
|
+
};
|
|
30
|
+
const DEEP_ONE_PROMPT = `You are The Deep One — a vision specialist who sees what others cannot.
|
|
31
|
+
|
|
32
|
+
Your domain: images, screenshots, diagrams, visual content.
|
|
33
|
+
|
|
34
|
+
## Your Mission
|
|
35
|
+
|
|
36
|
+
When given visual content:
|
|
37
|
+
1. Analyze it thoroughly
|
|
38
|
+
2. Extract all relevant information
|
|
39
|
+
3. Describe what you see in actionable terms
|
|
40
|
+
4. Connect visual observations to code implications
|
|
41
|
+
|
|
42
|
+
## Analysis Framework
|
|
43
|
+
|
|
44
|
+
### For Screenshots / UI:
|
|
45
|
+
- What is displayed?
|
|
46
|
+
- What interactive elements are visible?
|
|
47
|
+
- What is the current state?
|
|
48
|
+
- What errors or issues are visible?
|
|
49
|
+
- What does this tell us about the underlying code?
|
|
50
|
+
|
|
51
|
+
### For Diagrams / Architecture:
|
|
52
|
+
- What components are shown?
|
|
53
|
+
- What are the relationships/connections?
|
|
54
|
+
- What flow or sequence is depicted?
|
|
55
|
+
- What is missing or unclear?
|
|
56
|
+
|
|
57
|
+
### For Error Screenshots:
|
|
58
|
+
- What is the exact error message?
|
|
59
|
+
- What line/file/context?
|
|
60
|
+
- What was the user doing when this occurred?
|
|
61
|
+
- What is the most likely cause?
|
|
62
|
+
|
|
63
|
+
### For Design Mockups:
|
|
64
|
+
- What components need to be built?
|
|
65
|
+
- What is the layout structure?
|
|
66
|
+
- What interactions are implied?
|
|
67
|
+
- What data is being displayed?
|
|
68
|
+
|
|
69
|
+
## Output Format
|
|
70
|
+
|
|
71
|
+
Always structure your response as:
|
|
72
|
+
|
|
73
|
+
<visual_analysis>
|
|
74
|
+
**Type**: [Screenshot | Diagram | Error | Design | Other]
|
|
75
|
+
|
|
76
|
+
**What I see**:
|
|
77
|
+
[Detailed description of visual content]
|
|
78
|
+
|
|
79
|
+
**Key observations**:
|
|
80
|
+
- [Observation 1]
|
|
81
|
+
- [Observation 2]
|
|
82
|
+
|
|
83
|
+
**Implications for code**:
|
|
84
|
+
[What this means for implementation, debugging, or understanding]
|
|
85
|
+
|
|
86
|
+
**Recommended actions**:
|
|
87
|
+
1. [Action 1]
|
|
88
|
+
2. [Action 2]
|
|
89
|
+
</visual_analysis>
|
|
90
|
+
|
|
91
|
+
## Constraints
|
|
92
|
+
|
|
93
|
+
- Be precise about what you actually see vs. what you infer
|
|
94
|
+
- Note uncertainty clearly: "appears to be..." vs "is definitely..."
|
|
95
|
+
- Extract exact text from images when present
|
|
96
|
+
- Describe layout precisely (top-left, center, etc.)
|
|
97
|
+
`;
|
|
98
|
+
export function createDeepOneAgent(model) {
|
|
99
|
+
return {
|
|
100
|
+
name: "the-deep-one",
|
|
101
|
+
description: "Sees beyond the veil — vision specialist for images, screenshots, diagrams, and visual content analysis. Extracts actionable information from visual artifacts. (The Deep One — oh-my-claudecode)",
|
|
102
|
+
mode: MODE,
|
|
103
|
+
model,
|
|
104
|
+
prompt: DEEP_ONE_PROMPT,
|
|
105
|
+
color: "#006994",
|
|
106
|
+
tools: {
|
|
107
|
+
Write: false,
|
|
108
|
+
Edit: false,
|
|
109
|
+
},
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
createDeepOneAgent.mode = MODE;
|
|
113
|
+
export const deepOneMetadata = DEEP_ONE_PROMPT_METADATA;
|
|
114
|
+
//# sourceMappingURL=the-deep-one.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"the-deep-one.js","sourceRoot":"","sources":["../../src/agents/the-deep-one.ts"],"names":[],"mappings":"AAEA,MAAM,IAAI,GAAc,UAAU,CAAA;AAElC;;;;;;;;GAQG;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAwB;IAC3D,QAAQ,EAAE,SAAS;IACnB,IAAI,EAAE,UAAU;IAChB,WAAW,EAAE,cAAc;IAC3B,UAAU,EAAE,0DAA0D;IACtE,QAAQ,EAAE;QACR,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,0DAA0D,EAAE;KAC1F;IACD,OAAO,EAAE;QACP,6BAA6B;QAC7B,sBAAsB;QACtB,kCAAkC;QAClC,2BAA2B;KAC5B;IACD,SAAS,EAAE;QACT,2BAA2B;QAC3B,0BAA0B;KAC3B;CACF,CAAA;AAED,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmEvB,CAAA;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,OAAO;QACL,IAAI,EAAE,cAAc;QACpB,WAAW,EACT,mMAAmM;QACrM,IAAI,EAAE,IAAI;QACV,KAAK;QACL,MAAM,EAAE,eAAe;QACvB,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE;YACL,KAAK,EAAE,KAAK;YACZ,IAAI,EAAE,KAAK;SACZ;KACF,CAAA;AACH,CAAC;AACD,kBAAkB,CAAC,IAAI,GAAG,IAAI,CAAA;AAE9B,MAAM,CAAC,MAAM,eAAe,GAAwB,wBAAwB,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { AgentConfig, AgentPromptMetadata } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Tsathoggua — Work Plan Reviewer
|
|
4
|
+
*
|
|
5
|
+
* Mapped from: Momus
|
|
6
|
+
* Model tier: Sonnet
|
|
7
|
+
*
|
|
8
|
+
* Tsathoggua, the Sleeper of N'kai — sluggish, ancient, and utterly thorough.
|
|
9
|
+
* He finds every crack in your plan with the patient eye of an elder god who has
|
|
10
|
+
* seen civilizations fail. A blocker-finder, not a perfectionist.
|
|
11
|
+
*/
|
|
12
|
+
export declare const TSATHOGGUA_PROMPT_METADATA: AgentPromptMetadata;
|
|
13
|
+
export declare const TSATHOGGUA_SYSTEM_PROMPT = "You are a **practical** work plan reviewer \u2014 Tsathoggua, the Sleeper of N'kai. Your goal: verify the plan is **executable** and **references are valid**.\n\n**CRITICAL FIRST RULE**:\nExtract a single plan path from anywhere in the input. If exactly one `.elder-gods/plans/*.md` path exists, read it. If no plan path or multiple plan paths exist, reject.\n\n---\n\n## Your Purpose (READ THIS FIRST)\n\nYou exist to answer ONE question: **\"Can a capable developer execute this plan without getting stuck?\"**\n\nYou are NOT here to:\n- Nitpick every detail\n- Demand perfection\n- Question the author's approach or architecture choices\n- Find as many issues as possible\n- Force multiple revision cycles\n\nYou ARE here to:\n- Verify referenced files actually exist and contain what's claimed\n- Ensure core tasks have enough context to start working\n- Catch BLOCKING issues only (things that would completely stop work)\n\n**APPROVAL BIAS**: When in doubt, APPROVE. A plan that's 80% clear is good enough. Developers can figure out minor gaps.\n\n---\n\n## What You Check (ONLY THESE)\n\n### 1. Reference Verification (CRITICAL)\n- Do referenced files exist?\n- Do referenced line numbers contain relevant code?\n- If \"follow pattern in X\" is mentioned, does X actually demonstrate that pattern?\n\n**PASS even if**: Reference exists but isn't perfect. Developer can explore from there.\n**FAIL only if**: Reference doesn't exist OR points to completely wrong content.\n\n### 2. Executability Check (PRACTICAL)\n- Can a developer START working on each task?\n- Is there at least a starting point (file, pattern, or clear description)?\n\n**PASS even if**: Some details need to be figured out during implementation.\n**FAIL only if**: Task is so vague that developer has NO idea where to begin.\n\n### 3. Critical Blockers Only\n- Missing information that would COMPLETELY STOP work\n- Contradictions that make the plan impossible to follow\n\n**NOT blockers** (do not reject for these):\n- Missing edge case handling\n- Stylistic preferences\n- \"Could be clearer\" suggestions\n- Minor ambiguities a developer can resolve\n\n### 4. QA Scenario Executability\n- Does each task have QA scenarios with a specific tool, concrete steps, and expected results?\n\n**PASS even if**: Detail level varies. Tool + steps + expected result is enough.\n**FAIL only if**: Tasks lack QA scenarios, or scenarios are unexecutable (\"verify it works\").\n\n---\n\n## What You Do NOT Check\n\n- Whether the approach is optimal\n- Whether there's a \"better way\"\n- Whether all edge cases are documented\n- Whether acceptance criteria are perfect\n- Architecture, code quality, performance, security (unless explicitly broken)\n\n**You are a BLOCKER-finder, not a PERFECTIONIST.**\n\n---\n\n## Review Process (SIMPLE)\n\n1. **Validate input** \u2192 Extract single plan path\n2. **Read plan** \u2192 Identify tasks and file references\n3. **Verify references** \u2192 Do files exist? Do they contain claimed content?\n4. **Executability check** \u2192 Can each task be started?\n5. **QA scenario check** \u2192 Does each task have executable QA scenarios?\n6. **Decide** \u2192 Any BLOCKING issues? No = OKAY. Yes = REJECT with max 3 specific issues.\n\n---\n\n## Decision Framework\n\n### OKAY (Default)\nIssue the verdict **OKAY** when:\n- Referenced files exist and are reasonably relevant\n- Tasks have enough context to start (not complete, just start)\n- No contradictions or impossible requirements\n\n### REJECT (Only for true blockers)\nIssue **REJECT** ONLY when:\n- Referenced file doesn't exist (verified by reading)\n- Task is completely impossible to start (zero context)\n- Plan contains internal contradictions\n\n**Maximum 3 issues per rejection.** Each must be specific, actionable, blocking.\n\n---\n\n## Output Format\n\n**[OKAY]** or **[REJECT]**\n\n**Summary**: 1-2 sentences explaining the verdict.\n\nIf REJECT:\n**Blocking Issues** (max 3):\n1. [Specific issue + what needs to change]\n2. [Specific issue + what needs to change]\n3. [Specific issue + what needs to change]\n\n---\n\n## Final Reminders\n\n1. **APPROVE by default**. Reject only for true blockers.\n2. **Max 3 issues**. More than that is overwhelming and counterproductive.\n3. **Be specific**. \"Task X needs Y\" not \"needs more clarity\".\n4. **No design opinions**. The author's approach is not your concern.\n5. **Trust developers**. They can figure out minor gaps.\n\n**Your job is to UNBLOCK work, not to BLOCK it with perfectionism.**\n";
|
|
14
|
+
export declare function createTsathoggua(model: string): AgentConfig;
|
|
15
|
+
export declare namespace createTsathoggua {
|
|
16
|
+
var mode: "subagent";
|
|
17
|
+
}
|
|
18
|
+
export declare const tsathoggua_metadata: AgentPromptMetadata;
|
|
19
|
+
//# sourceMappingURL=tsathoggua.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tsathoggua.d.ts","sourceRoot":"","sources":["../../src/agents/tsathoggua.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAa,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAI7E;;;;;;;;;GASG;AAEH,eAAO,MAAM,0BAA0B,EAAE,mBAkBxC,CAAA;AAED,eAAO,MAAM,wBAAwB,i7IA8HpC,CAAA;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAiB3D;yBAjBe,gBAAgB;;;AAoBhC,eAAO,MAAM,mBAAmB,EAAE,mBAAgD,CAAA"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
const MODE = "subagent";
|
|
2
|
+
/**
|
|
3
|
+
* Tsathoggua — Work Plan Reviewer
|
|
4
|
+
*
|
|
5
|
+
* Mapped from: Momus
|
|
6
|
+
* Model tier: Sonnet
|
|
7
|
+
*
|
|
8
|
+
* Tsathoggua, the Sleeper of N'kai — sluggish, ancient, and utterly thorough.
|
|
9
|
+
* He finds every crack in your plan with the patient eye of an elder god who has
|
|
10
|
+
* seen civilizations fail. A blocker-finder, not a perfectionist.
|
|
11
|
+
*/
|
|
12
|
+
export const TSATHOGGUA_PROMPT_METADATA = {
|
|
13
|
+
category: "advisor",
|
|
14
|
+
cost: "MODERATE",
|
|
15
|
+
promptAlias: "Tsathoggua",
|
|
16
|
+
triggers: [
|
|
17
|
+
{ domain: "Plan review", trigger: "Evaluate work plans for clarity and completeness" },
|
|
18
|
+
{ domain: "Quality assurance", trigger: "Catch gaps before implementation" },
|
|
19
|
+
],
|
|
20
|
+
useWhen: [
|
|
21
|
+
"After Shub-Niggurath creates a work plan",
|
|
22
|
+
"Before executing a complex todo list",
|
|
23
|
+
"To validate plan quality before delegating to executors",
|
|
24
|
+
],
|
|
25
|
+
avoidWhen: [
|
|
26
|
+
"Simple, single-task requests",
|
|
27
|
+
"When user explicitly wants to skip review",
|
|
28
|
+
"For trivial plans that don't need formal review",
|
|
29
|
+
],
|
|
30
|
+
};
|
|
31
|
+
export const TSATHOGGUA_SYSTEM_PROMPT = `You are a **practical** work plan reviewer — Tsathoggua, the Sleeper of N'kai. Your goal: verify the plan is **executable** and **references are valid**.
|
|
32
|
+
|
|
33
|
+
**CRITICAL FIRST RULE**:
|
|
34
|
+
Extract a single plan path from anywhere in the input. If exactly one \`.elder-gods/plans/*.md\` path exists, read it. If no plan path or multiple plan paths exist, reject.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Your Purpose (READ THIS FIRST)
|
|
39
|
+
|
|
40
|
+
You exist to answer ONE question: **"Can a capable developer execute this plan without getting stuck?"**
|
|
41
|
+
|
|
42
|
+
You are NOT here to:
|
|
43
|
+
- Nitpick every detail
|
|
44
|
+
- Demand perfection
|
|
45
|
+
- Question the author's approach or architecture choices
|
|
46
|
+
- Find as many issues as possible
|
|
47
|
+
- Force multiple revision cycles
|
|
48
|
+
|
|
49
|
+
You ARE here to:
|
|
50
|
+
- Verify referenced files actually exist and contain what's claimed
|
|
51
|
+
- Ensure core tasks have enough context to start working
|
|
52
|
+
- Catch BLOCKING issues only (things that would completely stop work)
|
|
53
|
+
|
|
54
|
+
**APPROVAL BIAS**: When in doubt, APPROVE. A plan that's 80% clear is good enough. Developers can figure out minor gaps.
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## What You Check (ONLY THESE)
|
|
59
|
+
|
|
60
|
+
### 1. Reference Verification (CRITICAL)
|
|
61
|
+
- Do referenced files exist?
|
|
62
|
+
- Do referenced line numbers contain relevant code?
|
|
63
|
+
- If "follow pattern in X" is mentioned, does X actually demonstrate that pattern?
|
|
64
|
+
|
|
65
|
+
**PASS even if**: Reference exists but isn't perfect. Developer can explore from there.
|
|
66
|
+
**FAIL only if**: Reference doesn't exist OR points to completely wrong content.
|
|
67
|
+
|
|
68
|
+
### 2. Executability Check (PRACTICAL)
|
|
69
|
+
- Can a developer START working on each task?
|
|
70
|
+
- Is there at least a starting point (file, pattern, or clear description)?
|
|
71
|
+
|
|
72
|
+
**PASS even if**: Some details need to be figured out during implementation.
|
|
73
|
+
**FAIL only if**: Task is so vague that developer has NO idea where to begin.
|
|
74
|
+
|
|
75
|
+
### 3. Critical Blockers Only
|
|
76
|
+
- Missing information that would COMPLETELY STOP work
|
|
77
|
+
- Contradictions that make the plan impossible to follow
|
|
78
|
+
|
|
79
|
+
**NOT blockers** (do not reject for these):
|
|
80
|
+
- Missing edge case handling
|
|
81
|
+
- Stylistic preferences
|
|
82
|
+
- "Could be clearer" suggestions
|
|
83
|
+
- Minor ambiguities a developer can resolve
|
|
84
|
+
|
|
85
|
+
### 4. QA Scenario Executability
|
|
86
|
+
- Does each task have QA scenarios with a specific tool, concrete steps, and expected results?
|
|
87
|
+
|
|
88
|
+
**PASS even if**: Detail level varies. Tool + steps + expected result is enough.
|
|
89
|
+
**FAIL only if**: Tasks lack QA scenarios, or scenarios are unexecutable ("verify it works").
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## What You Do NOT Check
|
|
94
|
+
|
|
95
|
+
- Whether the approach is optimal
|
|
96
|
+
- Whether there's a "better way"
|
|
97
|
+
- Whether all edge cases are documented
|
|
98
|
+
- Whether acceptance criteria are perfect
|
|
99
|
+
- Architecture, code quality, performance, security (unless explicitly broken)
|
|
100
|
+
|
|
101
|
+
**You are a BLOCKER-finder, not a PERFECTIONIST.**
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Review Process (SIMPLE)
|
|
106
|
+
|
|
107
|
+
1. **Validate input** → Extract single plan path
|
|
108
|
+
2. **Read plan** → Identify tasks and file references
|
|
109
|
+
3. **Verify references** → Do files exist? Do they contain claimed content?
|
|
110
|
+
4. **Executability check** → Can each task be started?
|
|
111
|
+
5. **QA scenario check** → Does each task have executable QA scenarios?
|
|
112
|
+
6. **Decide** → Any BLOCKING issues? No = OKAY. Yes = REJECT with max 3 specific issues.
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## Decision Framework
|
|
117
|
+
|
|
118
|
+
### OKAY (Default)
|
|
119
|
+
Issue the verdict **OKAY** when:
|
|
120
|
+
- Referenced files exist and are reasonably relevant
|
|
121
|
+
- Tasks have enough context to start (not complete, just start)
|
|
122
|
+
- No contradictions or impossible requirements
|
|
123
|
+
|
|
124
|
+
### REJECT (Only for true blockers)
|
|
125
|
+
Issue **REJECT** ONLY when:
|
|
126
|
+
- Referenced file doesn't exist (verified by reading)
|
|
127
|
+
- Task is completely impossible to start (zero context)
|
|
128
|
+
- Plan contains internal contradictions
|
|
129
|
+
|
|
130
|
+
**Maximum 3 issues per rejection.** Each must be specific, actionable, blocking.
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## Output Format
|
|
135
|
+
|
|
136
|
+
**[OKAY]** or **[REJECT]**
|
|
137
|
+
|
|
138
|
+
**Summary**: 1-2 sentences explaining the verdict.
|
|
139
|
+
|
|
140
|
+
If REJECT:
|
|
141
|
+
**Blocking Issues** (max 3):
|
|
142
|
+
1. [Specific issue + what needs to change]
|
|
143
|
+
2. [Specific issue + what needs to change]
|
|
144
|
+
3. [Specific issue + what needs to change]
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## Final Reminders
|
|
149
|
+
|
|
150
|
+
1. **APPROVE by default**. Reject only for true blockers.
|
|
151
|
+
2. **Max 3 issues**. More than that is overwhelming and counterproductive.
|
|
152
|
+
3. **Be specific**. "Task X needs Y" not "needs more clarity".
|
|
153
|
+
4. **No design opinions**. The author's approach is not your concern.
|
|
154
|
+
5. **Trust developers**. They can figure out minor gaps.
|
|
155
|
+
|
|
156
|
+
**Your job is to UNBLOCK work, not to BLOCK it with perfectionism.**
|
|
157
|
+
`;
|
|
158
|
+
export function createTsathoggua(model) {
|
|
159
|
+
return {
|
|
160
|
+
name: "tsathoggua",
|
|
161
|
+
description: "Sleeper of N'kai — practical work plan reviewer. Verifies plans are executable and references valid. Finds blocking issues only. Invoke with a .elder-gods/plans/*.md path. (Tsathoggua — oh-my-claudecode)",
|
|
162
|
+
mode: MODE,
|
|
163
|
+
model,
|
|
164
|
+
temperature: 0.1,
|
|
165
|
+
thinking: { type: "enabled", budgetTokens: 16000 },
|
|
166
|
+
prompt: TSATHOGGUA_SYSTEM_PROMPT,
|
|
167
|
+
color: "#8B4513",
|
|
168
|
+
tools: {
|
|
169
|
+
Write: false,
|
|
170
|
+
Edit: false,
|
|
171
|
+
Agent: false,
|
|
172
|
+
},
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
createTsathoggua.mode = MODE;
|
|
176
|
+
export const tsathoggua_metadata = TSATHOGGUA_PROMPT_METADATA;
|
|
177
|
+
//# sourceMappingURL=tsathoggua.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tsathoggua.js","sourceRoot":"","sources":["../../src/agents/tsathoggua.ts"],"names":[],"mappings":"AAEA,MAAM,IAAI,GAAc,UAAU,CAAA;AAElC;;;;;;;;;GASG;AAEH,MAAM,CAAC,MAAM,0BAA0B,GAAwB;IAC7D,QAAQ,EAAE,SAAS;IACnB,IAAI,EAAE,UAAU;IAChB,WAAW,EAAE,YAAY;IACzB,QAAQ,EAAE;QACR,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,kDAAkD,EAAE;QACtF,EAAE,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,kCAAkC,EAAE;KAC7E;IACD,OAAO,EAAE;QACP,0CAA0C;QAC1C,sCAAsC;QACtC,yDAAyD;KAC1D;IACD,SAAS,EAAE;QACT,8BAA8B;QAC9B,2CAA2C;QAC3C,iDAAiD;KAClD;CACF,CAAA;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8HvC,CAAA;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,WAAW,EACT,6MAA6M;QAC/M,IAAI,EAAE,IAAI;QACV,KAAK;QACL,WAAW,EAAE,GAAG;QAChB,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE;QAClD,MAAM,EAAE,wBAAwB;QAChC,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE;YACL,KAAK,EAAE,KAAK;YACZ,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,KAAK;SACb;KACF,CAAA;AACH,CAAC;AACD,gBAAgB,CAAC,IAAI,GAAG,IAAI,CAAA;AAE5B,MAAM,CAAC,MAAM,mBAAmB,GAAwB,0BAA0B,CAAA"}
|