golem-cc 2.1.2 → 3.0.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/commands/golem/build.md +18 -0
- package/.claude/commands/golem/config.md +39 -0
- package/.claude/commands/golem/continue.md +73 -0
- package/.claude/commands/golem/doctor.md +46 -0
- package/.claude/commands/golem/document.md +138 -0
- package/.claude/commands/golem/help.md +58 -0
- package/.claude/commands/golem/pause.md +130 -0
- package/.claude/commands/golem/plan.md +111 -0
- package/.claude/commands/golem/review.md +166 -0
- package/.claude/commands/golem/security.md +186 -0
- package/.claude/commands/golem/simplify.md +76 -0
- package/.claude/commands/golem/spec.md +105 -0
- package/.claude/commands/golem/status.md +33 -0
- package/.golem/agents/code-simplifier.md +54 -0
- package/.golem/agents/review-architecture.md +59 -0
- package/.golem/agents/review-logic.md +50 -0
- package/.golem/agents/review-security.md +50 -0
- package/.golem/agents/review-style.md +48 -0
- package/.golem/agents/review-tests.md +48 -0
- package/.golem/agents/spec-builder.md +60 -0
- package/.golem/bin/golem.mjs +270 -0
- package/.golem/lib/build.mjs +557 -0
- package/.golem/lib/claude.mjs +95 -0
- package/.golem/lib/config.mjs +421 -0
- package/.golem/lib/display.mjs +191 -0
- package/.golem/lib/doctor.mjs +197 -0
- package/.golem/lib/document.mjs +792 -0
- package/.golem/lib/gates.mjs +78 -0
- package/.golem/lib/init.mjs +166 -0
- package/.golem/lib/output.mjs +40 -0
- package/.golem/lib/ratelimit.mjs +86 -0
- package/.golem/lib/security.mjs +603 -0
- package/.golem/lib/simplify.mjs +101 -0
- package/.golem/lib/tui.mjs +368 -0
- package/.golem/lib/usage.mjs +119 -0
- package/.golem/lib/worktree.mjs +509 -0
- package/.golem/prompts/build.md +23 -0
- package/.golem/prompts/document-inline.md +66 -0
- package/.golem/prompts/document-markdown.md +80 -0
- package/.golem/prompts/simplify.md +35 -0
- package/README.md +141 -142
- package/bin/golem-shim.mjs +36 -0
- package/bin/install.mjs +193 -0
- package/package.json +27 -32
- package/.env.example +0 -17
- package/bin/golem +0 -1040
- package/commands/golem/build.md +0 -235
- package/commands/golem/config.md +0 -55
- package/commands/golem/doctor.md +0 -137
- package/commands/golem/help.md +0 -212
- package/commands/golem/plan.md +0 -214
- package/commands/golem/review.md +0 -376
- package/commands/golem/security.md +0 -204
- package/commands/golem/simplify.md +0 -94
- package/commands/golem/spec.md +0 -226
- package/commands/golem/status.md +0 -60
- package/dist/api/freshworks.d.ts +0 -61
- package/dist/api/freshworks.d.ts.map +0 -1
- package/dist/api/freshworks.js +0 -119
- package/dist/api/freshworks.js.map +0 -1
- package/dist/api/gitea.d.ts +0 -96
- package/dist/api/gitea.d.ts.map +0 -1
- package/dist/api/gitea.js +0 -154
- package/dist/api/gitea.js.map +0 -1
- package/dist/cli/index.d.ts +0 -9
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js +0 -352
- package/dist/cli/index.js.map +0 -1
- package/dist/sync/ticket-sync.d.ts +0 -53
- package/dist/sync/ticket-sync.d.ts.map +0 -1
- package/dist/sync/ticket-sync.js +0 -226
- package/dist/sync/ticket-sync.js.map +0 -1
- package/dist/types.d.ts +0 -125
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -5
- package/dist/types.js.map +0 -1
- package/dist/worktree/manager.d.ts +0 -54
- package/dist/worktree/manager.d.ts.map +0 -1
- package/dist/worktree/manager.js +0 -190
- package/dist/worktree/manager.js.map +0 -1
- package/golem/agents/code-simplifier.md +0 -81
- package/golem/agents/spec-builder.md +0 -90
- package/golem/prompts/PROMPT_build.md +0 -71
- package/golem/prompts/PROMPT_plan.md +0 -102
|
@@ -1,204 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: golem:security
|
|
3
|
-
description: Run automated security scans
|
|
4
|
-
allowed-tools: [Read, Bash, Write]
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
<objective>
|
|
8
|
-
Run automated security tooling to detect vulnerabilities before code review. Uses gitleaks (secrets), semgrep (SAST), pnpm audit (dependencies), and trivy (containers).
|
|
9
|
-
</objective>
|
|
10
|
-
|
|
11
|
-
<context>
|
|
12
|
-
Current ticket:
|
|
13
|
-
```bash
|
|
14
|
-
TICKET_ID=$(basename "$(pwd)" | grep -oE '(INC|SR)-[0-9]+' || echo "")
|
|
15
|
-
echo "Ticket: ${TICKET_ID:-none}"
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
Check available tools:
|
|
19
|
-
```bash
|
|
20
|
-
echo "Checking security tools..."
|
|
21
|
-
which gitleaks && gitleaks version || echo "gitleaks: NOT INSTALLED"
|
|
22
|
-
which semgrep && semgrep --version || echo "semgrep: NOT INSTALLED"
|
|
23
|
-
which trivy && trivy --version || echo "trivy: NOT INSTALLED"
|
|
24
|
-
pnpm --version && echo "pnpm: OK" || echo "pnpm: NOT INSTALLED"
|
|
25
|
-
```
|
|
26
|
-
</context>
|
|
27
|
-
|
|
28
|
-
<process>
|
|
29
|
-
|
|
30
|
-
## Phase 1: Pre-flight
|
|
31
|
-
|
|
32
|
-
Check which security tools are available. Not all are required - run what's available.
|
|
33
|
-
|
|
34
|
-
Required tools and install commands:
|
|
35
|
-
- **gitleaks**: `brew install gitleaks` or `go install github.com/gitleaks/gitleaks/v8@latest`
|
|
36
|
-
- **semgrep**: `brew install semgrep` or `pip install semgrep`
|
|
37
|
-
- **trivy**: `brew install trivy` or `curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh`
|
|
38
|
-
- **pnpm**: `npm install -g pnpm`
|
|
39
|
-
|
|
40
|
-
## Phase 2: Run Security Scans
|
|
41
|
-
|
|
42
|
-
Run each available tool and capture results:
|
|
43
|
-
|
|
44
|
-
### 2.1 Secrets Scan (gitleaks)
|
|
45
|
-
```bash
|
|
46
|
-
if command -v gitleaks &> /dev/null; then
|
|
47
|
-
echo "=== SECRETS SCAN (gitleaks) ==="
|
|
48
|
-
if [ -f .gitleaks.toml ]; then
|
|
49
|
-
gitleaks detect --config .gitleaks.toml --no-git -v 2>&1
|
|
50
|
-
else
|
|
51
|
-
gitleaks detect --no-git -v 2>&1
|
|
52
|
-
fi
|
|
53
|
-
echo "Exit code: $?"
|
|
54
|
-
fi
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
Scans for:
|
|
58
|
-
- API keys (AWS, GCP, Azure, Stripe, etc.)
|
|
59
|
-
- Private keys (RSA, SSH, PGP)
|
|
60
|
-
- Database connection strings with passwords
|
|
61
|
-
- OAuth/JWT tokens
|
|
62
|
-
- Hardcoded credentials
|
|
63
|
-
|
|
64
|
-
### 2.2 SAST Scan (semgrep)
|
|
65
|
-
```bash
|
|
66
|
-
if command -v semgrep &> /dev/null; then
|
|
67
|
-
echo "=== SAST SCAN (semgrep) ==="
|
|
68
|
-
semgrep scan --config auto --json 2>&1 | head -200
|
|
69
|
-
echo "Exit code: $?"
|
|
70
|
-
fi
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
Scans for OWASP Top 10:
|
|
74
|
-
- A01: Broken Access Control
|
|
75
|
-
- A02: Cryptographic Failures
|
|
76
|
-
- A03: Injection (SQL, XSS, Command)
|
|
77
|
-
- A04: Insecure Design
|
|
78
|
-
- A05: Security Misconfiguration
|
|
79
|
-
- A06: Vulnerable Components
|
|
80
|
-
- A07: Authentication Failures
|
|
81
|
-
- A08: Data Integrity Failures
|
|
82
|
-
- A09: Logging Failures
|
|
83
|
-
- A10: SSRF
|
|
84
|
-
|
|
85
|
-
### 2.3 Dependency Scan (pnpm audit)
|
|
86
|
-
```bash
|
|
87
|
-
if [ -f package.json ]; then
|
|
88
|
-
echo "=== DEPENDENCY SCAN (pnpm audit) ==="
|
|
89
|
-
pnpm audit --json 2>&1 | head -100
|
|
90
|
-
echo "Exit code: $?"
|
|
91
|
-
fi
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
Checks against:
|
|
95
|
-
- National Vulnerability Database (NVD/CVE)
|
|
96
|
-
- GitHub Advisory Database
|
|
97
|
-
- npm Security Advisories
|
|
98
|
-
|
|
99
|
-
### 2.4 Container Scan (trivy)
|
|
100
|
-
```bash
|
|
101
|
-
if command -v trivy &> /dev/null && command -v docker &> /dev/null; then
|
|
102
|
-
# Check for local image or Dockerfile
|
|
103
|
-
if docker images --format "{{.Repository}}" 2>/dev/null | head -1 | grep -q .; then
|
|
104
|
-
echo "=== CONTAINER SCAN (trivy) ==="
|
|
105
|
-
IMAGE=$(docker images --format "{{.Repository}}:{{.Tag}}" 2>/dev/null | head -1)
|
|
106
|
-
trivy image --severity HIGH,CRITICAL "$IMAGE" 2>&1 | head -100
|
|
107
|
-
echo "Exit code: $?"
|
|
108
|
-
elif [ -f Dockerfile ]; then
|
|
109
|
-
echo "=== DOCKERFILE SCAN (trivy) ==="
|
|
110
|
-
trivy config Dockerfile 2>&1
|
|
111
|
-
echo "Exit code: $?"
|
|
112
|
-
else
|
|
113
|
-
echo "=== CONTAINER SCAN: SKIPPED (no image or Dockerfile) ==="
|
|
114
|
-
fi
|
|
115
|
-
fi
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
Scans for:
|
|
119
|
-
- OS package vulnerabilities
|
|
120
|
-
- Application dependencies in image
|
|
121
|
-
- Dockerfile misconfigurations
|
|
122
|
-
|
|
123
|
-
## Phase 3: Generate Report
|
|
124
|
-
|
|
125
|
-
Write `.golem/SECURITY_REPORT.md`:
|
|
126
|
-
|
|
127
|
-
```markdown
|
|
128
|
-
# Security Scan Report
|
|
129
|
-
|
|
130
|
-
**Generated:** {ISO timestamp}
|
|
131
|
-
**Ticket:** {TICKET_ID}
|
|
132
|
-
|
|
133
|
-
## Summary
|
|
134
|
-
|
|
135
|
-
| Scan | Status | Findings |
|
|
136
|
-
|------|--------|----------|
|
|
137
|
-
| Secrets (gitleaks) | {PASS/FAIL/SKIPPED} | {count} |
|
|
138
|
-
| SAST (semgrep) | {PASS/FAIL/SKIPPED} | {count} |
|
|
139
|
-
| Dependencies (pnpm) | {PASS/FAIL/SKIPPED} | {high}/{critical} |
|
|
140
|
-
| Container (trivy) | {PASS/FAIL/SKIPPED} | {count} |
|
|
141
|
-
|
|
142
|
-
## Verdict
|
|
143
|
-
|
|
144
|
-
{PASS | FAIL | PARTIAL}
|
|
145
|
-
|
|
146
|
-
---
|
|
147
|
-
|
|
148
|
-
## Findings
|
|
149
|
-
|
|
150
|
-
### Secrets
|
|
151
|
-
{details or "No secrets detected"}
|
|
152
|
-
|
|
153
|
-
### SAST
|
|
154
|
-
{details or "No vulnerabilities detected"}
|
|
155
|
-
|
|
156
|
-
### Dependencies
|
|
157
|
-
{details or "No vulnerable dependencies"}
|
|
158
|
-
|
|
159
|
-
### Container
|
|
160
|
-
{details or "No container vulnerabilities"}
|
|
161
|
-
|
|
162
|
-
---
|
|
163
|
-
|
|
164
|
-
## Next Steps
|
|
165
|
-
|
|
166
|
-
{If FAIL: list what needs to be fixed}
|
|
167
|
-
{If PASS: "Ready for code review - run /golem:review"}
|
|
168
|
-
```
|
|
169
|
-
|
|
170
|
-
## Phase 4: Verdict
|
|
171
|
-
|
|
172
|
-
**PASS**: All scans passed (or skipped due to missing tools)
|
|
173
|
-
- Announce ready for review
|
|
174
|
-
- Suggest running `/golem:review`
|
|
175
|
-
|
|
176
|
-
**FAIL**: Any scan found issues
|
|
177
|
-
- List critical findings
|
|
178
|
-
- Block until fixed
|
|
179
|
-
- Do NOT proceed to review
|
|
180
|
-
|
|
181
|
-
**PARTIAL**: Some tools missing
|
|
182
|
-
- Warn about missing coverage
|
|
183
|
-
- Suggest installing missing tools
|
|
184
|
-
- Allow proceeding with caution
|
|
185
|
-
|
|
186
|
-
</process>
|
|
187
|
-
|
|
188
|
-
<success_criteria>
|
|
189
|
-
- [ ] Available security tools identified
|
|
190
|
-
- [ ] Secrets scan completed (if gitleaks available)
|
|
191
|
-
- [ ] SAST scan completed (if semgrep available)
|
|
192
|
-
- [ ] Dependency scan completed (if package.json exists)
|
|
193
|
-
- [ ] Container scan completed (if applicable)
|
|
194
|
-
- [ ] Report generated at .golem/SECURITY_REPORT.md
|
|
195
|
-
- [ ] Clear verdict provided
|
|
196
|
-
</success_criteria>
|
|
197
|
-
|
|
198
|
-
<important>
|
|
199
|
-
- This is READ-ONLY - do not fix issues, just report them
|
|
200
|
-
- Any secrets found are CRITICAL - must be rotated immediately
|
|
201
|
-
- High/Critical dependency vulns should block merge
|
|
202
|
-
- Missing tools should trigger a warning, not a failure
|
|
203
|
-
- Container scan only runs if image exists or Dockerfile present
|
|
204
|
-
</important>
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: golem:simplify
|
|
3
|
-
description: Run code simplifier on specified files or recent changes
|
|
4
|
-
allowed-tools: [Read, Write, Edit, Glob, Grep, Bash]
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
<objective>
|
|
8
|
-
Simplify code by removing AI artifacts, reducing complexity, and improving clarity while preserving ALL behavior.
|
|
9
|
-
</objective>
|
|
10
|
-
|
|
11
|
-
<execution_context>
|
|
12
|
-
@~/.golem/agents/code-simplifier.md
|
|
13
|
-
</execution_context>
|
|
14
|
-
|
|
15
|
-
<context>
|
|
16
|
-
Get files to simplify (staged, modified, or specified):
|
|
17
|
-
```bash
|
|
18
|
-
# Staged files
|
|
19
|
-
git diff --cached --name-only 2>/dev/null | head -20
|
|
20
|
-
|
|
21
|
-
# Modified files
|
|
22
|
-
git diff --name-only 2>/dev/null | head -20
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
Test command:
|
|
26
|
-
```bash
|
|
27
|
-
grep -A1 "### Testing" .golem/AGENTS.md 2>/dev/null | tail -1
|
|
28
|
-
```
|
|
29
|
-
</context>
|
|
30
|
-
|
|
31
|
-
<process>
|
|
32
|
-
|
|
33
|
-
## 1. Identify Target Files
|
|
34
|
-
|
|
35
|
-
If user specified files, use those.
|
|
36
|
-
Otherwise, check for staged/modified files.
|
|
37
|
-
Skip:
|
|
38
|
-
- Test files (`*.test.ts`, `*.spec.ts`)
|
|
39
|
-
- Type definitions (`*.d.ts`)
|
|
40
|
-
- Config files (`*.config.*`)
|
|
41
|
-
- Generated files
|
|
42
|
-
|
|
43
|
-
## 2. Simplify Each File
|
|
44
|
-
|
|
45
|
-
For each source file:
|
|
46
|
-
|
|
47
|
-
### Priority 1: Remove AI Artifacts
|
|
48
|
-
- Unnecessary comments explaining obvious code
|
|
49
|
-
- Defensive checks that can never trigger
|
|
50
|
-
- Type casts to `any` without need
|
|
51
|
-
- Commented-out code blocks
|
|
52
|
-
- TODO comments for completed work
|
|
53
|
-
|
|
54
|
-
### Priority 2: Reduce Complexity
|
|
55
|
-
- Flatten nested conditionals (use early returns)
|
|
56
|
-
- Replace nested ternaries with if/else
|
|
57
|
-
- Extract complex boolean expressions to named variables
|
|
58
|
-
- Consolidate duplicate code paths
|
|
59
|
-
|
|
60
|
-
### Priority 3: Improve Clarity
|
|
61
|
-
- Rename unclear variables (single letters, abbreviations)
|
|
62
|
-
- Rename functions to describe what they do
|
|
63
|
-
- Remove dead/unreachable code
|
|
64
|
-
- Simplify over-engineered abstractions
|
|
65
|
-
|
|
66
|
-
### Priority 4: Structural
|
|
67
|
-
- Extract large functions into focused helpers
|
|
68
|
-
- Inline trivial one-use functions
|
|
69
|
-
- Simplify data structures
|
|
70
|
-
|
|
71
|
-
## 3. Validate
|
|
72
|
-
|
|
73
|
-
Run tests to confirm no regressions:
|
|
74
|
-
```bash
|
|
75
|
-
{test_command from .golem/AGENTS.md}
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
If tests fail: revert simplifications that caused failures.
|
|
79
|
-
|
|
80
|
-
## 4. Report
|
|
81
|
-
|
|
82
|
-
Summarize what was simplified:
|
|
83
|
-
- Files modified
|
|
84
|
-
- Changes made
|
|
85
|
-
- Tests still passing
|
|
86
|
-
|
|
87
|
-
</process>
|
|
88
|
-
|
|
89
|
-
<important>
|
|
90
|
-
- NEVER change behavior - only improve clarity
|
|
91
|
-
- Run tests after EVERY file simplification
|
|
92
|
-
- If unsure whether a change affects behavior, don't make it
|
|
93
|
-
- This is cosmetic surgery, not functional changes
|
|
94
|
-
</important>
|
package/commands/golem/spec.md
DELETED
|
@@ -1,226 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: golem:spec
|
|
3
|
-
description: Build project specs through guided conversation
|
|
4
|
-
allowed-tools: [Read, Write, Glob, Grep, Bash, AskUserQuestion, Task]
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
<objective>
|
|
8
|
-
Spawn an agent team to explore requirements from multiple angles, challenge assumptions, and generate robust specs. The team synthesizes findings into spec files that form the foundation for planning and building.
|
|
9
|
-
</objective>
|
|
10
|
-
|
|
11
|
-
<execution_context>
|
|
12
|
-
@~/.golem/agents/spec-builder.md
|
|
13
|
-
</execution_context>
|
|
14
|
-
|
|
15
|
-
<context>
|
|
16
|
-
Current ticket (if any):
|
|
17
|
-
```bash
|
|
18
|
-
TICKET_ID=$(basename "$(pwd)" | grep -oE '(INC|SR)-[0-9]+' || echo "")
|
|
19
|
-
if [ -n "$TICKET_ID" ]; then
|
|
20
|
-
cat .golem/tickets/$TICKET_ID.yaml 2>/dev/null || echo "No ticket state found"
|
|
21
|
-
else
|
|
22
|
-
echo "Not in a ticket worktree"
|
|
23
|
-
fi
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
Current specs:
|
|
27
|
-
```bash
|
|
28
|
-
ls -la .golem/specs/ 2>/dev/null || echo "No specs directory yet"
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
Project structure:
|
|
32
|
-
```bash
|
|
33
|
-
if [ -f package.json ]; then echo "Node/TypeScript project"; head -30 package.json; fi
|
|
34
|
-
if [ -f pyproject.toml ]; then echo "Python project"; head -30 pyproject.toml; fi
|
|
35
|
-
if [ -f Cargo.toml ]; then echo "Rust project"; head -30 Cargo.toml; fi
|
|
36
|
-
```
|
|
37
|
-
</context>
|
|
38
|
-
|
|
39
|
-
<process>
|
|
40
|
-
|
|
41
|
-
## Phase 1: Gather Initial Context
|
|
42
|
-
|
|
43
|
-
Before spawning the team, gather baseline information:
|
|
44
|
-
|
|
45
|
-
1. If in a ticket worktree: read the ticket description
|
|
46
|
-
2. If NOT in a ticket worktree: ask what we're building
|
|
47
|
-
3. Get a rough sense of scope and purpose
|
|
48
|
-
|
|
49
|
-
## Phase 2: Spawn Spec Team
|
|
50
|
-
|
|
51
|
-
Create an agent team with three specialized teammates:
|
|
52
|
-
|
|
53
|
-
```
|
|
54
|
-
Create an agent team to explore requirements for this feature/fix.
|
|
55
|
-
Spawn three teammates:
|
|
56
|
-
|
|
57
|
-
1. **UX Advocate** - Focuses on user experience and usability:
|
|
58
|
-
- Who are the users?
|
|
59
|
-
- What's their workflow?
|
|
60
|
-
- What's the simplest interface that solves the problem?
|
|
61
|
-
- Where will users get confused or frustrated?
|
|
62
|
-
|
|
63
|
-
2. **Architect** - Focuses on technical design:
|
|
64
|
-
- What's the system architecture?
|
|
65
|
-
- How does this fit into existing code?
|
|
66
|
-
- What are the technical constraints?
|
|
67
|
-
- What are the integration points?
|
|
68
|
-
|
|
69
|
-
3. **Devil's Advocate** - Actively challenges assumptions:
|
|
70
|
-
- "Do we actually need this?"
|
|
71
|
-
- "What's the simplest thing that could work?"
|
|
72
|
-
- "What happens when X fails?"
|
|
73
|
-
- "Why not use existing solution Y?"
|
|
74
|
-
|
|
75
|
-
Rules for Devil's Advocate:
|
|
76
|
-
- Must articulate WHY something is problematic
|
|
77
|
-
- Must propose a concrete alternative
|
|
78
|
-
- Must back down when concern is adequately addressed
|
|
79
|
-
- Goal is better thinking, not blocking progress
|
|
80
|
-
|
|
81
|
-
Have them explore the problem space simultaneously, share findings,
|
|
82
|
-
and challenge each other's assumptions. The debate should surface
|
|
83
|
-
requirements we'd otherwise miss.
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
## Phase 3: Team Exploration
|
|
87
|
-
|
|
88
|
-
Let the team explore these questions:
|
|
89
|
-
|
|
90
|
-
### UX Advocate investigates:
|
|
91
|
-
- What's the actual problem users face?
|
|
92
|
-
- What's the minimum viable solution?
|
|
93
|
-
- What edge cases will users encounter?
|
|
94
|
-
- What error states need handling?
|
|
95
|
-
|
|
96
|
-
### Architect investigates:
|
|
97
|
-
- What existing code/patterns can we reuse?
|
|
98
|
-
- What new components are needed?
|
|
99
|
-
- What are the dependencies?
|
|
100
|
-
- What technical constraints exist?
|
|
101
|
-
|
|
102
|
-
### Devil's Advocate challenges:
|
|
103
|
-
- Is this feature actually necessary?
|
|
104
|
-
- Are we overengineering?
|
|
105
|
-
- What's the cost of NOT doing this?
|
|
106
|
-
- What simpler alternatives exist?
|
|
107
|
-
|
|
108
|
-
## Phase 4: Synthesize Findings
|
|
109
|
-
|
|
110
|
-
After team exploration, synthesize into topics:
|
|
111
|
-
|
|
112
|
-
1. Review findings from all three perspectives
|
|
113
|
-
2. Identify 1-5 distinct topics of concern
|
|
114
|
-
3. Each topic should pass the "no AND test"
|
|
115
|
-
4. Resolve any conflicts between teammates
|
|
116
|
-
|
|
117
|
-
## Phase 5: Generate Spec Files
|
|
118
|
-
|
|
119
|
-
For each topic, write to `.golem/specs/{topic-name}.md`:
|
|
120
|
-
|
|
121
|
-
```markdown
|
|
122
|
-
# {Topic Name}
|
|
123
|
-
|
|
124
|
-
Ticket: {INC-XXXX} (if applicable)
|
|
125
|
-
|
|
126
|
-
## Purpose
|
|
127
|
-
{One paragraph explaining what this covers and why}
|
|
128
|
-
|
|
129
|
-
## Requirements
|
|
130
|
-
|
|
131
|
-
### Must Have
|
|
132
|
-
- {Requirement 1}
|
|
133
|
-
- {Requirement 2}
|
|
134
|
-
|
|
135
|
-
### Should Have
|
|
136
|
-
- {Optional requirement}
|
|
137
|
-
|
|
138
|
-
### Must Not
|
|
139
|
-
- {Anti-requirement / constraint}
|
|
140
|
-
|
|
141
|
-
## Acceptance Criteria
|
|
142
|
-
- [ ] {Testable criterion 1}
|
|
143
|
-
- [ ] {Testable criterion 2}
|
|
144
|
-
|
|
145
|
-
## Tests
|
|
146
|
-
- {Test description} → expects {outcome}
|
|
147
|
-
|
|
148
|
-
## Technical Notes
|
|
149
|
-
{Implementation hints, constraints, decisions}
|
|
150
|
-
|
|
151
|
-
## Considered Alternatives
|
|
152
|
-
{What the Devil's Advocate proposed and why we did/didn't take it}
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
## Phase 6: Operational Setup
|
|
156
|
-
|
|
157
|
-
After specs are written:
|
|
158
|
-
|
|
159
|
-
1. Create `.golem/specs/` directory if needed
|
|
160
|
-
2. Write each spec file
|
|
161
|
-
3. Detect or ask for test/build/lint commands
|
|
162
|
-
4. Write `.golem/AGENTS.md`:
|
|
163
|
-
|
|
164
|
-
```markdown
|
|
165
|
-
# Operational Guide
|
|
166
|
-
|
|
167
|
-
Ticket: {INC-XXXX}
|
|
168
|
-
Branch: {branch-name}
|
|
169
|
-
|
|
170
|
-
## Commands
|
|
171
|
-
|
|
172
|
-
### Testing
|
|
173
|
-
\`\`\`bash
|
|
174
|
-
{test command}
|
|
175
|
-
\`\`\`
|
|
176
|
-
|
|
177
|
-
### Type Checking
|
|
178
|
-
\`\`\`bash
|
|
179
|
-
{typecheck command}
|
|
180
|
-
\`\`\`
|
|
181
|
-
|
|
182
|
-
### Linting
|
|
183
|
-
\`\`\`bash
|
|
184
|
-
{lint command}
|
|
185
|
-
\`\`\`
|
|
186
|
-
|
|
187
|
-
## Learnings
|
|
188
|
-
<!-- Updated during build iterations -->
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
## Phase 7: Cleanup & Completion
|
|
192
|
-
|
|
193
|
-
1. Clean up the agent team
|
|
194
|
-
2. Update ticket status:
|
|
195
|
-
```bash
|
|
196
|
-
golem-api ticket:status $TICKET_ID spec --note "Specs complete"
|
|
197
|
-
```
|
|
198
|
-
3. Summarize what was created
|
|
199
|
-
4. Show next steps:
|
|
200
|
-
```
|
|
201
|
-
Specs complete! Next steps:
|
|
202
|
-
1. Review .golem/specs/ and adjust if needed
|
|
203
|
-
2. Run /golem:plan to create implementation plan
|
|
204
|
-
3. Run /golem:build to start building
|
|
205
|
-
```
|
|
206
|
-
|
|
207
|
-
</process>
|
|
208
|
-
|
|
209
|
-
<success_criteria>
|
|
210
|
-
- [ ] Agent team explored requirements from 3 perspectives
|
|
211
|
-
- [ ] Devil's advocate challenged assumptions
|
|
212
|
-
- [ ] Conflicts resolved through discussion
|
|
213
|
-
- [ ] Each topic has a separate spec file
|
|
214
|
-
- [ ] Tests defined in each spec
|
|
215
|
-
- [ ] Alternatives considered and documented
|
|
216
|
-
- [ ] AGENTS.md exists with operational commands
|
|
217
|
-
- [ ] Team cleaned up
|
|
218
|
-
- [ ] Ticket status synced
|
|
219
|
-
</success_criteria>
|
|
220
|
-
|
|
221
|
-
<important>
|
|
222
|
-
- The Devil's Advocate must be ACTIVE, not passive criticism
|
|
223
|
-
- All three perspectives should contribute to final specs
|
|
224
|
-
- Document "Considered Alternatives" so we remember why we chose this path
|
|
225
|
-
- Clean up the team when done
|
|
226
|
-
</important>
|
package/commands/golem/status.md
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: golem:status
|
|
3
|
-
description: Show current project status
|
|
4
|
-
allowed-tools: [Read, Bash, Glob]
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
<objective>
|
|
8
|
-
Display current ticket status, spec progress, and implementation plan state.
|
|
9
|
-
</objective>
|
|
10
|
-
|
|
11
|
-
<context>
|
|
12
|
-
Ticket info:
|
|
13
|
-
```bash
|
|
14
|
-
TICKET_ID=$(basename "$(pwd)" | grep -oE '(INC|SR)-[0-9]+' || echo "")
|
|
15
|
-
if [ -n "$TICKET_ID" ]; then
|
|
16
|
-
echo "=== Ticket: $TICKET_ID ==="
|
|
17
|
-
cat .golem/tickets/$TICKET_ID.yaml 2>/dev/null || echo "No local state"
|
|
18
|
-
else
|
|
19
|
-
echo "Not in a ticket worktree"
|
|
20
|
-
echo ""
|
|
21
|
-
echo "=== All Tickets ==="
|
|
22
|
-
golem-api ticket:list 2>/dev/null || echo "No tickets"
|
|
23
|
-
fi
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
Specs:
|
|
27
|
-
```bash
|
|
28
|
-
echo "=== Specs ==="
|
|
29
|
-
ls .golem/specs/*.md 2>/dev/null || echo "No specs yet"
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
Plan progress:
|
|
33
|
-
```bash
|
|
34
|
-
echo "=== Implementation Plan ==="
|
|
35
|
-
if [ -f .golem/IMPLEMENTATION_PLAN.md ]; then
|
|
36
|
-
TOTAL=$(grep -c '^\- \[' .golem/IMPLEMENTATION_PLAN.md 2>/dev/null || echo 0)
|
|
37
|
-
DONE=$(grep -c '^\- \[x\]' .golem/IMPLEMENTATION_PLAN.md 2>/dev/null || echo 0)
|
|
38
|
-
echo "Tasks: $DONE / $TOTAL complete"
|
|
39
|
-
echo ""
|
|
40
|
-
echo "Current stage:"
|
|
41
|
-
grep -A5 '^## Stage' .golem/IMPLEMENTATION_PLAN.md | grep -E '(^## Stage|^\- \[)' | head -10
|
|
42
|
-
else
|
|
43
|
-
echo "No plan yet - run /golem:plan"
|
|
44
|
-
fi
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
Git status:
|
|
48
|
-
```bash
|
|
49
|
-
echo ""
|
|
50
|
-
echo "=== Git Status ==="
|
|
51
|
-
git branch --show-current 2>/dev/null
|
|
52
|
-
git log --oneline -5 2>/dev/null
|
|
53
|
-
```
|
|
54
|
-
</context>
|
|
55
|
-
|
|
56
|
-
<process>
|
|
57
|
-
1. Display all context information
|
|
58
|
-
2. Summarize current state
|
|
59
|
-
3. Suggest next action if any
|
|
60
|
-
</process>
|
package/dist/api/freshworks.d.ts
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Freshservice API client
|
|
3
|
-
*
|
|
4
|
-
* API Docs: https://api.freshservice.com/
|
|
5
|
-
*/
|
|
6
|
-
import type { FreshTicket, FreshTicketCreatePayload } from '../types.js';
|
|
7
|
-
export interface FreshworksConfig {
|
|
8
|
-
domain: string;
|
|
9
|
-
apiKey: string;
|
|
10
|
-
}
|
|
11
|
-
export declare class FreshworksClient {
|
|
12
|
-
private baseUrl;
|
|
13
|
-
private headers;
|
|
14
|
-
constructor(config: FreshworksConfig);
|
|
15
|
-
private request;
|
|
16
|
-
/**
|
|
17
|
-
* Get a ticket by ID
|
|
18
|
-
*/
|
|
19
|
-
getTicket(id: number): Promise<FreshTicket>;
|
|
20
|
-
/**
|
|
21
|
-
* Get tickets assigned to current user
|
|
22
|
-
*/
|
|
23
|
-
getMyTickets(): Promise<FreshTicket[]>;
|
|
24
|
-
/**
|
|
25
|
-
* Create a new ticket
|
|
26
|
-
*/
|
|
27
|
-
createTicket(payload: FreshTicketCreatePayload): Promise<FreshTicket>;
|
|
28
|
-
/**
|
|
29
|
-
* Update a ticket
|
|
30
|
-
*/
|
|
31
|
-
updateTicket(id: number, updates: Partial<FreshTicketCreatePayload>): Promise<FreshTicket>;
|
|
32
|
-
/**
|
|
33
|
-
* Get current agent info
|
|
34
|
-
*/
|
|
35
|
-
getCurrentAgent(): Promise<{
|
|
36
|
-
id: number;
|
|
37
|
-
email: string;
|
|
38
|
-
}>;
|
|
39
|
-
/**
|
|
40
|
-
* Add a note to a ticket
|
|
41
|
-
*/
|
|
42
|
-
addNote(ticketId: number, body: string, isPrivate?: boolean): Promise<void>;
|
|
43
|
-
/**
|
|
44
|
-
* Close/resolve a ticket
|
|
45
|
-
* Note: Freshservice requires responder_id and resolution_notes when closing
|
|
46
|
-
*/
|
|
47
|
-
closeTicket(id: number, resolution?: string): Promise<FreshTicket>;
|
|
48
|
-
/**
|
|
49
|
-
* Format ticket ID for display (e.g., "INC-1234")
|
|
50
|
-
*/
|
|
51
|
-
static formatTicketId(id: number, type?: 'Incident' | 'Service Request'): string;
|
|
52
|
-
/**
|
|
53
|
-
* Parse ticket ID from string (e.g., "INC-1234" -> 1234)
|
|
54
|
-
*/
|
|
55
|
-
static parseTicketId(idString: string): number;
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Create client from environment variables
|
|
59
|
-
*/
|
|
60
|
-
export declare function createFreshworksClient(): FreshworksClient;
|
|
61
|
-
//# sourceMappingURL=freshworks.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"freshworks.d.ts","sourceRoot":"","sources":["../../src/api/freshworks.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAEzE,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAU;gBAEb,MAAM,EAAE,gBAAgB;YAUtB,OAAO;IAmBrB;;OAEG;IACG,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAKjD;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAS5C;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,WAAW,CAAC;IAS3E;;OAEG;IACG,YAAY,CAChB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,OAAO,CAAC,wBAAwB,CAAC,GACzC,OAAO,CAAC,WAAW,CAAC;IASvB;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAK/D;;OAEG;IACG,OAAO,CACX,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,SAAS,UAAO,GACf,OAAO,CAAC,IAAI,CAAC;IAOhB;;;OAGG;IACG,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAexE;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,GAAE,UAAU,GAAG,iBAA8B,GAAG,MAAM;IAK5F;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;CAO/C;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,gBAAgB,CASzD"}
|