claudepod 1.2.2 → 1.3.1

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.
Files changed (45) hide show
  1. package/.devcontainer/CHANGELOG.md +179 -50
  2. package/.devcontainer/CLAUDE.md +24 -7
  3. package/.devcontainer/README.md +2 -0
  4. package/.devcontainer/config/main-system-prompt.md +357 -81
  5. package/.devcontainer/config/settings.json +6 -3
  6. package/.devcontainer/devcontainer.json +17 -5
  7. package/.devcontainer/features/agent-browser/README.md +65 -0
  8. package/.devcontainer/features/agent-browser/devcontainer-feature.json +23 -0
  9. package/.devcontainer/features/agent-browser/install.sh +72 -0
  10. package/.devcontainer/features/lsp-servers/devcontainer-feature.json +8 -2
  11. package/.devcontainer/features/lsp-servers/install.sh +25 -1
  12. package/.devcontainer/features/notify-hook/README.md +86 -0
  13. package/.devcontainer/features/notify-hook/devcontainer-feature.json +23 -0
  14. package/.devcontainer/features/notify-hook/install.sh +38 -0
  15. package/.devcontainer/plugins/devs-marketplace/.claude-plugin/marketplace.json +99 -0
  16. package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/.claude-plugin/plugin.json +7 -0
  17. package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/hooks/hooks.json +17 -0
  18. package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/scripts/format-file.py +101 -0
  19. package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/.claude-plugin/plugin.json +7 -0
  20. package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/hooks/hooks.json +17 -0
  21. package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/scripts/lint-file.py +137 -0
  22. package/.devcontainer/plugins/devs-marketplace/plugins/claudepod-lsp/.claude-plugin/plugin.json +7 -0
  23. package/.devcontainer/plugins/devs-marketplace/plugins/dangerous-command-blocker/.claude-plugin/plugin.json +7 -0
  24. package/.devcontainer/plugins/devs-marketplace/plugins/dangerous-command-blocker/hooks/hooks.json +17 -0
  25. package/.devcontainer/plugins/devs-marketplace/plugins/dangerous-command-blocker/scripts/block-dangerous.py +110 -0
  26. package/.devcontainer/plugins/devs-marketplace/plugins/notify-hook/.claude-plugin/plugin.json +7 -0
  27. package/.devcontainer/plugins/devs-marketplace/plugins/notify-hook/hooks/hooks.json +16 -0
  28. package/.devcontainer/plugins/devs-marketplace/plugins/planning-reminder/.claude-plugin/plugin.json +7 -0
  29. package/.devcontainer/plugins/devs-marketplace/plugins/planning-reminder/hooks/hooks.json +17 -0
  30. package/.devcontainer/plugins/devs-marketplace/plugins/protected-files-guard/.claude-plugin/plugin.json +7 -0
  31. package/.devcontainer/plugins/devs-marketplace/plugins/protected-files-guard/hooks/hooks.json +17 -0
  32. package/.devcontainer/plugins/devs-marketplace/plugins/protected-files-guard/scripts/guard-protected.py +108 -0
  33. package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/.claude-plugin/commands/ticket:create-pr.md +337 -0
  34. package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/.claude-plugin/commands/ticket:new.md +166 -0
  35. package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/.claude-plugin/commands/ticket:review-commit.md +290 -0
  36. package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/.claude-plugin/commands/ticket:work.md +257 -0
  37. package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/.claude-plugin/plugin.json +8 -0
  38. package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/.claude-plugin/system-prompt.md +184 -0
  39. package/.devcontainer/scripts/setup-aliases.sh +41 -13
  40. package/.devcontainer/scripts/setup-plugins.sh +35 -13
  41. package/.devcontainer/scripts/setup.sh +1 -3
  42. package/README.md +37 -0
  43. package/package.json +1 -2
  44. package/setup.js +14 -6
  45. package/.devcontainer/scripts/setup-lsp.sh +0 -20
@@ -0,0 +1,337 @@
1
+ ---
2
+ description: Create pull request with aggressive security and architecture review
3
+ disable-model-invocation: true
4
+ allowed-tools: Bash(gh:*), Bash(git:*), Read, Grep, Glob, AskUserQuestion
5
+ ---
6
+
7
+ # /ticket:create-pr - Create PR with Aggressive Review
8
+
9
+ Create pull request, conduct deep security and architecture review, post findings. NEVER auto-approve.
10
+
11
+ ## Prerequisites
12
+
13
+ Must have active ticket context. If not set, prompt for ticket number.
14
+
15
+ ## Process
16
+
17
+ ### Phase 1: Gather Context
18
+
19
+ ```bash
20
+ # Branch info
21
+ git branch --show-current
22
+ git log main..HEAD --oneline
23
+ git diff main...HEAD --stat
24
+
25
+ # Full diff
26
+ git diff main...HEAD
27
+
28
+ # Ticket
29
+ gh issue view $TICKET --json number,title,body
30
+
31
+ # Discover project rules
32
+ ls -la CLAUDE.md .claude/CLAUDE.md CLAUDE.local.md 2>/dev/null
33
+ ls -la .claude/rules/*.md 2>/dev/null
34
+ ```
35
+
36
+ ### Phase 2: Create PR
37
+
38
+ ```bash
39
+ gh pr create --title "<type>(<scope>): <summary>" --body "$(cat <<'EOF'
40
+ ## Summary
41
+
42
+ [1-3 bullet points of what this PR accomplishes]
43
+
44
+ ## Related Issue
45
+
46
+ Closes #[TICKET] (or Refs #[TICKET] if partial)
47
+
48
+ ## Changes
49
+
50
+ - [Component]: [What changed]
51
+
52
+ ## Testing
53
+
54
+ - [ ] [How to test each change]
55
+
56
+ ---
57
+ *PR created by Claude. Awaiting human review.*
58
+ EOF
59
+ )"
60
+ ```
61
+
62
+ Capture PR number for subsequent operations.
63
+
64
+ ### Phase 3: Aggressive Analysis
65
+
66
+ This review is DEEPER than commit review - final gate before merge.
67
+
68
+ #### Attack Surface Analysis
69
+
70
+ | Check | Look For |
71
+ |-------|----------|
72
+ | New Endpoints | Every new route/handler exposed |
73
+ | New Inputs | Every new user input vector |
74
+ | Permission Changes | Any auth/authz modifications |
75
+ | Data Flow | How data moves through new code |
76
+ | External Integrations | New API calls, webhooks, services |
77
+
78
+ #### Threat Modeling (per feature)
79
+
80
+ For each significant feature:
81
+ - What could an attacker exploit?
82
+ - What data could be exfiltrated?
83
+ - What operations could be abused?
84
+ - What rate limiting is needed?
85
+ - What audit logging is needed?
86
+
87
+ #### Dependency Security
88
+
89
+ ```bash
90
+ # Check for new dependencies (adapt patterns to project)
91
+ git diff main...HEAD -- "**/requirements*.txt" "**/package*.json" "**/Cargo.toml" "**/go.mod" "**/Gemfile"
92
+ ```
93
+
94
+ | Check | Look For |
95
+ |-------|----------|
96
+ | New Dependencies | List all new packages + versions |
97
+ | Known CVEs | Check against vulnerability databases |
98
+ | Supply Chain | Typosquatting, maintainer reputation |
99
+ | License Compliance | License compatibility issues |
100
+
101
+ #### Project Rules Adherence
102
+
103
+ Check compliance with project-specific rules (deeper than commit review):
104
+
105
+ 1. **Discover rules**:
106
+ - Read `CLAUDE.md` or `.claude/CLAUDE.md` if present
107
+ - Read all files in `.claude/rules/*.md`
108
+ - Check `CLAUDE.local.md` for user-specific rules
109
+
110
+ 2. **Full diff review for compliance**:
111
+ - Check EVERY change against stated rules
112
+ - Note architectural patterns that should be followed
113
+ - Flag ALL deviations from documented conventions
114
+
115
+ | Rule Source | Compliance | Notes |
116
+ |-------------|------------|-------|
117
+ | CLAUDE.md | OK / VIOLATION | [specifics] |
118
+ | rules/[name].md | OK / VIOLATION | [specifics] |
119
+
120
+ **Common checks**:
121
+ - Code organization matches documented patterns
122
+ - Naming conventions followed throughout
123
+ - Required abstractions used consistently
124
+ - Forbidden patterns avoided everywhere
125
+
126
+ #### Architecture Deep Dive
127
+
128
+ | Check | Look For |
129
+ |-------|----------|
130
+ | Pattern Compliance | Full diff against established patterns |
131
+ | Coupling Analysis | New dependencies between modules |
132
+ | Scalability | O(n) analysis, potential bottlenecks |
133
+ | Error Propagation | How errors flow through new code |
134
+ | Recovery Strategies | Graceful degradation, retry logic |
135
+ | State Management | Race conditions, consistency issues |
136
+
137
+ #### Test Analysis
138
+
139
+ **Note**: If user opted out of tests during `/ticket:work`, note "Tests: Skipped per user preference" and skip detailed analysis.
140
+
141
+ Otherwise, evaluate against testing standards:
142
+
143
+ | Check | Assess |
144
+ |-------|--------|
145
+ | Behavior Coverage | Are key behaviors tested? (not line count) |
146
+ | Test Quality | Do tests verify outcomes, not implementation? |
147
+ | Brittleness | Any tests that will break on refactor? |
148
+ | Over-testing | Trivial code with unnecessary tests? |
149
+ | Under-testing | Critical paths without tests? |
150
+ | Manual Test Plan | What can't be automated |
151
+
152
+ **AI testing pitfalls to flag**:
153
+ - Tests for trivial getters/setters
154
+ - Excessive edge cases (>5 per function)
155
+ - Tests asserting on implementation details
156
+ - Over-mocked tests that verify nothing
157
+
158
+ #### Breaking Changes
159
+
160
+ | Check | Look For |
161
+ |-------|----------|
162
+ | API Contracts | Changed request/response schemas |
163
+ | Database Schema | Migration requirements |
164
+ | Configuration | New env vars, changed defaults |
165
+ | Dependencies | Version bumps affecting consumers |
166
+
167
+ #### Requirements Final Check
168
+
169
+ | Requirement | Status | Evidence |
170
+ |-------------|--------|----------|
171
+ | [Each EARS requirement] | SATISFIED / PARTIAL / NOT MET | [Location] |
172
+
173
+ All acceptance criteria must be verified.
174
+
175
+ ### Phase 4: Present Findings
176
+
177
+ Organize by severity:
178
+
179
+ ```markdown
180
+ ## PR Review Findings
181
+
182
+ ### Critical (Must Fix Before Merge)
183
+ - [Finding]: [file:line] - [Impact]
184
+
185
+ ### High (Should Fix Before Merge)
186
+ - [Finding]: [file:line] - [Impact]
187
+
188
+ ### Medium (Fix Soon)
189
+ - [Finding]: [file:line] - [Impact]
190
+
191
+ ### Low (Nice to Have)
192
+ - [Finding]: [file:line] - [Impact]
193
+
194
+ ### Info (Observations)
195
+ - [Observation]
196
+
197
+ ### Project Rules Compliance
198
+ | Rule Source | Status | Details |
199
+ |-------------|--------|---------|
200
+ | ... | ... | ... |
201
+
202
+ ### Requirements Status
203
+ | Requirement | Status | Evidence |
204
+ |-------------|--------|----------|
205
+ | ... | ... | ... |
206
+
207
+ ### Threat Model Summary
208
+ | Feature | Primary Risks | Mitigations Present |
209
+ |---------|---------------|---------------------|
210
+ | ... | ... | ... |
211
+ ```
212
+
213
+ ### Phase 5: User Decisions
214
+
215
+ Use AskUserQuestion:
216
+
217
+ ```
218
+ For each severity level:
219
+ - FIX: Address before posting review
220
+ - ISSUE: Create GitHub issue
221
+ - IGNORE: Acknowledge
222
+ - NOTE: Include in PR review but don't block
223
+ ```
224
+
225
+ ### Phase 6: Create Issues (if selected)
226
+
227
+ Group by category, include:
228
+ - PR number
229
+ - Branch name
230
+ - Commit range
231
+ - Link to original ticket
232
+
233
+ ```bash
234
+ gh issue create --title "[Category] findings from PR #[PR]" --body "..."
235
+ ```
236
+
237
+ ### Phase 7: Fix Selected Items
238
+
239
+ Address items marked FIX. Commit and push.
240
+
241
+ ### Phase 8: Post Review (NEVER APPROVE)
242
+
243
+ ```bash
244
+ gh pr review [PR] --comment --body "$(cat <<'EOF'
245
+ ## Automated Review
246
+
247
+ **Status**: Requires human approval
248
+
249
+ ### Summary
250
+
251
+ [Overall assessment - 2-3 sentences]
252
+
253
+ ### Critical Issues (Must Address)
254
+ - [Issue with file:line]
255
+
256
+ ### Required Changes
257
+ - [Specific change needed]
258
+
259
+ ### Suggestions
260
+ - [Nice-to-have improvements]
261
+
262
+ ### Project Rules Compliance
263
+ - [Summary of rules adherence]
264
+
265
+ ### Security Considerations
266
+ - [Key security points for human reviewer]
267
+
268
+ ### Test Coverage
269
+ - [Coverage assessment or "Skipped per user preference"]
270
+ - [Manual test recommendations if applicable]
271
+
272
+ ### Related Issues Created
273
+ - #[N]: [Description]
274
+
275
+ ---
276
+ *Automated review by Claude. Human approval required before merge.*
277
+ EOF
278
+ )"
279
+ ```
280
+
281
+ ### Phase 9: Post to Original Ticket
282
+
283
+ ```bash
284
+ gh issue comment $TICKET --body "$(cat <<'EOF'
285
+ ## Pull Request Created
286
+
287
+ **PR**: #[PR_NUMBER]
288
+ **Branch**: [branch]
289
+
290
+ ### Status
291
+ - [x] PR created
292
+ - [x] Automated review posted
293
+ - [ ] Human review pending
294
+ - [ ] Approved and merged
295
+
296
+ ### Review Summary
297
+ - Critical: [count]
298
+ - High: [count]
299
+ - Medium: [count]
300
+ - Low: [count]
301
+
302
+ ### Project Rules
303
+ - [Compliance summary]
304
+
305
+ ### Issues Created
306
+ - #[N]: [Category]
307
+
308
+ ### Next Steps
309
+ 1. Address critical/high findings if any
310
+ 2. Request human review
311
+ 3. Merge after approval
312
+
313
+ ---
314
+ *PR created by Claude.*
315
+ EOF
316
+ )"
317
+ ```
318
+
319
+ ## Rules
320
+
321
+ - **NEVER auto-approve** - always require human
322
+ - **Deeper than commit review** - this is final gate
323
+ - **Active threat modeling** required for each feature
324
+ - **All findings** categorized by severity
325
+ - **User decides** what to fix/issue/ignore
326
+ - **Dual posting**: PR comment + source ticket comment
327
+ - **Batch** all GitHub operations
328
+ - **Check project rules** (CLAUDE.md, .claude/rules/*.md) thoroughly
329
+ - **Respect test preferences** from planning phase
330
+
331
+ ## Severity Guide
332
+
333
+ **Critical**: Active vulnerability, data exposure, auth bypass, breaking production
334
+ **High**: Security weakness, significant bug, major pattern violation
335
+ **Medium**: Code smell, minor vulnerability, missing validation
336
+ **Low**: Style, optimization, minor improvements
337
+ **Info**: Observations, questions, future considerations
@@ -0,0 +1,166 @@
1
+ ---
2
+ description: Transform requirements into EARS-formatted GitHub issue with structured business requirements
3
+ argument-hint: [requirements description]
4
+ disable-model-invocation: true
5
+ allowed-tools: Bash(gh:*), Read, Grep, Glob, AskUserQuestion
6
+ ---
7
+
8
+ # /ticket:new - Create EARS-Formatted GitHub Issue
9
+
10
+ Transform requirements into structured GitHub issue with EARS-formatted business requirements.
11
+
12
+ ## Input
13
+
14
+ `$ARGUMENTS` - Stream-of-consciousness, structured, or minimal requirements description.
15
+
16
+ ## Process
17
+
18
+ ### Phase 1: Requirements Gathering
19
+
20
+ Use AskUserQuestion iteratively to clarify:
21
+
22
+ 1. **Problem Space**
23
+ - What problem does this solve?
24
+ - Who is affected? (end users, admins, system)
25
+ - What is the current state/workaround?
26
+
27
+ 2. **Desired Outcome**
28
+ - What does success look like?
29
+ - What is the end-user impact?
30
+ - Are there measurable success criteria?
31
+
32
+ 3. **Trigger Conditions** (determines EARS pattern)
33
+ - Always active? → Ubiquitous
34
+ - Triggered by event? → Event-Driven
35
+ - Active during state? → State-Driven
36
+ - Error/edge case handling? → Unwanted Behavior
37
+ - Optional/configurable? → Optional Feature
38
+
39
+ 4. **Scope Boundaries**
40
+ - What is explicitly OUT of scope?
41
+ - What systems/components are affected? (discover from codebase)
42
+
43
+ 5. **Technical Questions** (parking lot)
44
+ - Note questions for implementation phase
45
+ - Do NOT make technical decisions now
46
+
47
+ ### Phase 2: Structure Ticket
48
+
49
+ Format the ticket with these sections:
50
+
51
+ ```markdown
52
+ ## Original Request
53
+
54
+ > [Verbatim user input from $ARGUMENTS]
55
+
56
+ ## Overview
57
+
58
+ [Plain language description - goal, context, user impact. Cleaned and clarified from user input.]
59
+
60
+ ## Requirements
61
+
62
+ ### [System/Component Name]
63
+ - [EARS requirements for this system]
64
+
65
+ ### [Another System/Component]
66
+ - [EARS requirements for this system]
67
+
68
+ (Group by affected system/component. Discover systems by exploring codebase structure.
69
+ Single-system projects need no grouping. Include only systems with requirements.)
70
+
71
+ ## Technical Questions
72
+
73
+ - [ ] [Questions to resolve during /ticket:work]
74
+
75
+ ## Acceptance Criteria
76
+
77
+ - [ ] [Testable criteria derived from requirements]
78
+ ```
79
+
80
+ ### Preserve Original Input
81
+
82
+ If `$ARGUMENTS` contains meaningful context (more than a few words), include it verbatim in the "Original Request" section. This provides:
83
+ - Audit trail for requirements traceability
84
+ - Context for future readers
85
+ - Verification that requirements capture user intent
86
+
87
+ Omit the "Original Request" section only if input was trivially simple (single word, "test", etc.)
88
+
89
+ ### System/Component Discovery
90
+
91
+ Do NOT hardcode system names. Discover them by:
92
+ - Examining top-level directories (e.g., `src/`, `api/`, `web/`, `services/`)
93
+ - Checking package.json workspaces or monorepo structure
94
+ - Reading docker-compose.yml for service names
95
+ - Looking at existing CLAUDE.md for documented architecture
96
+
97
+ Use the actual names found in the project.
98
+
99
+ ### EARS Patterns
100
+
101
+ Every requirement MUST use one pattern:
102
+
103
+ | Pattern | Template | Use When |
104
+ |---------|----------|----------|
105
+ | Ubiquitous | The `<system>` shall `<response>`. | Always active, fundamental behavior |
106
+ | Event-Driven | WHEN `<trigger>`, the `<system>` shall `<response>`. | Triggered by specific event |
107
+ | State-Driven | WHILE `<state>`, the `<system>` shall `<response>`. | Active during condition |
108
+ | Unwanted Behavior | IF `<condition>`, THEN the `<system>` shall `<response>`. | Error handling, edge cases |
109
+ | Optional Feature | WHERE `<feature enabled>`, the `<system>` shall `<response>`. | Configurable features |
110
+
111
+ ### Phase 3: Confirm and Create
112
+
113
+ 1. Present formatted ticket for user confirmation
114
+ 2. Allow edits/refinements
115
+ 3. Create issue: `gh issue create --title "<title>" --body "<body>"`
116
+ 4. Output issue URL
117
+ 5. Suggest: "Run `/ticket:work #N` to start implementation planning"
118
+
119
+ ## Rules
120
+
121
+ - NO technical requirements (no code paths, file changes, implementation details)
122
+ - Every requirement MUST fit an EARS pattern
123
+ - Multi-system features → separate requirement per system with actual system name
124
+ - Plain language overview ALWAYS included
125
+ - Technical questions go in parking lot, not requirements
126
+ - Requirements describe WHAT, not HOW
127
+ - Preserve original user input for audit trail
128
+
129
+ ## Example Output
130
+
131
+ ```markdown
132
+ ## Original Request
133
+
134
+ > Users should be able to temporarily disable auto-proxying for their characters without having to delete them. Right now if someone wants to stop using a character temporarily they lose all their settings.
135
+
136
+ ## Overview
137
+
138
+ Users need the ability to temporarily disable character auto-proxying without deleting configuration. Currently, users must delete and recreate characters to toggle this behavior, losing customization.
139
+
140
+ ## Requirements
141
+
142
+ ### API
143
+ - The API shall store an enabled/disabled status for each character.
144
+ - WHEN a character's enabled status changes, the API shall publish a cache invalidation event.
145
+
146
+ ### Bot
147
+ - WHEN a user sends a message matching a character's proxy pattern, the bot shall check the character's enabled status before proxying.
148
+ - WHILE a character is disabled, the bot shall not proxy messages for that character.
149
+
150
+ ### Dashboard
151
+ - The dashboard shall display the character's enabled status on the character card.
152
+ - WHEN the user clicks the enable/disable toggle, the dashboard shall update the character's status via API.
153
+
154
+ ## Technical Questions
155
+
156
+ - [ ] Should disabled characters appear differently in command autocomplete?
157
+ - [ ] What is the default enabled status for new characters?
158
+
159
+ ## Acceptance Criteria
160
+
161
+ - [ ] Character can be disabled without deletion
162
+ - [ ] Disabled character messages are not proxied
163
+ - [ ] Status persists across restarts
164
+ - [ ] Dashboard reflects current status
165
+ - [ ] Cache invalidation works correctly
166
+ ```