@hailer/mcp 1.1.11 → 1.1.13
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/dist/app.js +18 -5
- package/dist/bot/bot-config.d.ts +12 -1
- package/dist/bot/bot-config.js +98 -14
- package/dist/bot/bot-manager.d.ts +13 -3
- package/dist/bot/bot-manager.js +80 -25
- package/dist/bot/bot.d.ts +46 -0
- package/dist/bot/bot.js +542 -166
- package/dist/bot/services/message-classifier.js +17 -0
- package/dist/bot/services/permission-guard.d.ts +52 -0
- package/dist/bot/services/permission-guard.js +149 -0
- package/dist/bot/services/types.d.ts +5 -0
- package/dist/bot/services/typing-indicator.d.ts +6 -1
- package/dist/bot/services/typing-indicator.js +19 -3
- package/dist/config.d.ts +6 -1
- package/dist/config.js +43 -0
- package/dist/core.js +3 -6
- package/dist/mcp/UserContextCache.d.ts +5 -0
- package/dist/mcp/UserContextCache.js +51 -19
- package/dist/mcp/hailer-clients.d.ts +19 -1
- package/dist/mcp/hailer-clients.js +157 -20
- package/dist/mcp/session-store.d.ts +68 -0
- package/dist/mcp/session-store.js +169 -0
- package/dist/mcp/signal-handler.js +12 -12
- package/dist/mcp/tool-registry.d.ts +17 -4
- package/dist/mcp/tool-registry.js +37 -7
- package/dist/mcp/tools/activity.js +99 -7
- package/dist/mcp/tools/app-scaffold.js +304 -336
- package/dist/mcp/tools/company.d.ts +9 -0
- package/dist/mcp/tools/company.js +88 -0
- package/dist/mcp/tools/discussion.js +68 -0
- package/dist/mcp/tools/workflow-permissions.d.ts +15 -0
- package/dist/mcp/tools/workflow-permissions.js +204 -0
- package/dist/mcp/tools/workflow.js +57 -18
- package/dist/mcp/utils/index.d.ts +2 -0
- package/dist/mcp/utils/index.js +12 -1
- package/dist/mcp/utils/role-utils.d.ts +74 -0
- package/dist/mcp/utils/role-utils.js +151 -0
- package/dist/mcp/utils/types.d.ts +43 -1
- package/dist/mcp/utils/types.js +14 -0
- package/dist/mcp/webhook-handler.d.ts +6 -0
- package/dist/mcp/webhook-handler.js +11 -0
- package/dist/mcp-server.d.ts +23 -2
- package/dist/mcp-server.js +639 -111
- package/dist/plugins/vipunen/client.d.ts +150 -0
- package/dist/plugins/vipunen/client.js +535 -0
- package/dist/plugins/vipunen/config/schema-config.json +19 -0
- package/dist/plugins/vipunen/config/schema-doc.json +22 -0
- package/dist/plugins/vipunen/index.d.ts +41 -0
- package/dist/plugins/vipunen/index.js +88 -0
- package/dist/plugins/vipunen/tools.d.ts +26 -0
- package/dist/plugins/vipunen/tools.js +501 -0
- package/package.json +2 -1
- package/.claude/.context-watchdog.json +0 -1
- package/.claude/.session-checked +0 -1
- package/.claude/CLAUDE.md +0 -370
- package/.claude/agents/agent-ada-skill-builder.md +0 -94
- package/.claude/agents/agent-alejandro-function-fields.md +0 -342
- package/.claude/agents/agent-bjorn-config-audit.md +0 -103
- package/.claude/agents/agent-builder-agent-creator.md +0 -130
- package/.claude/agents/agent-code-simplifier.md +0 -53
- package/.claude/agents/agent-dmitri-activity-crud.md +0 -159
- package/.claude/agents/agent-giuseppe-app-builder.md +0 -247
- package/.claude/agents/agent-gunther-mcp-tools.md +0 -39
- package/.claude/agents/agent-helga-workflow-config.md +0 -204
- package/.claude/agents/agent-igor-activity-mover-automation.md +0 -125
- package/.claude/agents/agent-ingrid-doc-templates.md +0 -261
- package/.claude/agents/agent-ivan-monolith.md +0 -154
- package/.claude/agents/agent-kenji-data-reader.md +0 -86
- package/.claude/agents/agent-lars-code-inspector.md +0 -102
- package/.claude/agents/agent-marco-mockup-builder.md +0 -110
- package/.claude/agents/agent-marcus-api-documenter.md +0 -323
- package/.claude/agents/agent-marketplace-publisher.md +0 -280
- package/.claude/agents/agent-marketplace-reviewer.md +0 -309
- package/.claude/agents/agent-permissions-handler.md +0 -208
- package/.claude/agents/agent-simple-writer.md +0 -48
- package/.claude/agents/agent-svetlana-code-review.md +0 -171
- package/.claude/agents/agent-tanya-test-runner.md +0 -333
- package/.claude/agents/agent-ui-designer.md +0 -100
- package/.claude/agents/agent-viktor-sql-insights.md +0 -212
- package/.claude/agents/agent-web-search.md +0 -55
- package/.claude/agents/agent-yevgeni-discussions.md +0 -45
- package/.claude/agents/agent-zara-zapier.md +0 -159
- package/.claude/commands/app-squad.md +0 -135
- package/.claude/commands/audit-squad.md +0 -158
- package/.claude/commands/autoplan.md +0 -563
- package/.claude/commands/cleanup-squad.md +0 -98
- package/.claude/commands/config-squad.md +0 -106
- package/.claude/commands/crud-squad.md +0 -87
- package/.claude/commands/data-squad.md +0 -97
- package/.claude/commands/debug-squad.md +0 -303
- package/.claude/commands/doc-squad.md +0 -65
- package/.claude/commands/handoff.md +0 -137
- package/.claude/commands/health.md +0 -49
- package/.claude/commands/help.md +0 -29
- package/.claude/commands/help:agents.md +0 -151
- package/.claude/commands/help:commands.md +0 -78
- package/.claude/commands/help:faq.md +0 -79
- package/.claude/commands/help:plugins.md +0 -50
- package/.claude/commands/help:skills.md +0 -93
- package/.claude/commands/help:tools.md +0 -75
- package/.claude/commands/hotfix-squad.md +0 -112
- package/.claude/commands/integration-squad.md +0 -82
- package/.claude/commands/janitor-squad.md +0 -167
- package/.claude/commands/learn-auto.md +0 -120
- package/.claude/commands/learn.md +0 -120
- package/.claude/commands/mcp-list.md +0 -27
- package/.claude/commands/onboard-squad.md +0 -140
- package/.claude/commands/plan-workspace.md +0 -732
- package/.claude/commands/prd.md +0 -130
- package/.claude/commands/project-status.md +0 -82
- package/.claude/commands/publish.md +0 -138
- package/.claude/commands/recap.md +0 -69
- package/.claude/commands/restore.md +0 -64
- package/.claude/commands/review-squad.md +0 -152
- package/.claude/commands/save.md +0 -24
- package/.claude/commands/stats.md +0 -19
- package/.claude/commands/swarm.md +0 -210
- package/.claude/commands/tool-builder.md +0 -39
- package/.claude/commands/ws-pull.md +0 -44
- package/.claude/hooks/_shared-memory.cjs +0 -305
- package/.claude/hooks/_utils.cjs +0 -108
- package/.claude/hooks/agent-failure-detector.cjs +0 -383
- package/.claude/hooks/agent-usage-logger.cjs +0 -204
- package/.claude/hooks/app-edit-guard.cjs +0 -494
- package/.claude/hooks/auto-learn.cjs +0 -304
- package/.claude/hooks/bash-guard.cjs +0 -272
- package/.claude/hooks/builder-mode-manager.cjs +0 -354
- package/.claude/hooks/bulk-activity-guard.cjs +0 -271
- package/.claude/hooks/context-watchdog.cjs +0 -230
- package/.claude/hooks/delegation-reminder.cjs +0 -465
- package/.claude/hooks/design-system-lint.cjs +0 -271
- package/.claude/hooks/post-scaffold-hook.cjs +0 -181
- package/.claude/hooks/prompt-guard.cjs +0 -354
- package/.claude/hooks/publish-template-guard.cjs +0 -147
- package/.claude/hooks/session-start.cjs +0 -35
- package/.claude/hooks/shared-memory-writer.cjs +0 -147
- package/.claude/hooks/skill-injector.cjs +0 -140
- package/.claude/hooks/skill-usage-logger.cjs +0 -258
- package/.claude/hooks/src-edit-guard.cjs +0 -240
- package/.claude/hooks/sync-marketplace-agents.cjs +0 -346
- package/.claude/settings.json +0 -257
- package/.claude/skills/SDK-activity-patterns/SKILL.md +0 -428
- package/.claude/skills/SDK-document-templates/SKILL.md +0 -1033
- package/.claude/skills/SDK-function-fields/SKILL.md +0 -542
- package/.claude/skills/SDK-generate-skill/SKILL.md +0 -92
- package/.claude/skills/SDK-init-skill/SKILL.md +0 -127
- package/.claude/skills/SDK-insight-queries/SKILL.md +0 -787
- package/.claude/skills/SDK-ws-config-skill/SKILL.md +0 -1139
- package/.claude/skills/agent-structure/SKILL.md +0 -98
- package/.claude/skills/api-documentation-patterns/SKILL.md +0 -474
- package/.claude/skills/chrome-mcp-reference/SKILL.md +0 -370
- package/.claude/skills/delegation-routing/SKILL.md +0 -202
- package/.claude/skills/frontend-design/SKILL.md +0 -254
- package/.claude/skills/hailer-activity-mover/SKILL.md +0 -213
- package/.claude/skills/hailer-api-client/SKILL.md +0 -518
- package/.claude/skills/hailer-app-builder/SKILL.md +0 -1434
- package/.claude/skills/hailer-apps-pictures/SKILL.md +0 -269
- package/.claude/skills/hailer-design-system/SKILL.md +0 -235
- package/.claude/skills/hailer-monolith-automations/SKILL.md +0 -686
- package/.claude/skills/hailer-permissions-system/SKILL.md +0 -121
- package/.claude/skills/hailer-project-protocol/SKILL.md +0 -488
- package/.claude/skills/hailer-rest-api/SKILL.md +0 -61
- package/.claude/skills/hailer-rest-api/hailer-activities.md +0 -184
- package/.claude/skills/hailer-rest-api/hailer-admin.md +0 -473
- package/.claude/skills/hailer-rest-api/hailer-calendar.md +0 -256
- package/.claude/skills/hailer-rest-api/hailer-feed.md +0 -249
- package/.claude/skills/hailer-rest-api/hailer-insights.md +0 -195
- package/.claude/skills/hailer-rest-api/hailer-messaging.md +0 -276
- package/.claude/skills/hailer-rest-api/hailer-workflows.md +0 -283
- package/.claude/skills/insight-join-patterns/SKILL.md +0 -174
- package/.claude/skills/integration-patterns/SKILL.md +0 -421
- package/.claude/skills/json-only-output/SKILL.md +0 -72
- package/.claude/skills/lsp-setup/SKILL.md +0 -160
- package/.claude/skills/mcp-direct-tools/SKILL.md +0 -153
- package/.claude/skills/optional-parameters/SKILL.md +0 -72
- package/.claude/skills/publish-hailer-app/SKILL.md +0 -244
- package/.claude/skills/testing-patterns/SKILL.md +0 -630
- package/.claude/skills/tool-builder/SKILL.md +0 -250
- package/.claude/skills/tool-parameter-usage/SKILL.md +0 -126
- package/.claude/skills/tool-response-verification/SKILL.md +0 -92
- package/.claude/skills/zapier-hailer-patterns/SKILL.md +0 -581
- package/.hailer-mcp-port +0 -1
- package/.mcp.json +0 -13
- package/.opencode/agent/agent-ada-skill-builder.md +0 -35
- package/.opencode/agent/agent-alejandro-function-fields.md +0 -39
- package/.opencode/agent/agent-bjorn-config-audit.md +0 -36
- package/.opencode/agent/agent-builder-agent-creator.md +0 -39
- package/.opencode/agent/agent-code-simplifier.md +0 -31
- package/.opencode/agent/agent-dmitri-activity-crud.md +0 -40
- package/.opencode/agent/agent-giuseppe-app-builder.md +0 -37
- package/.opencode/agent/agent-gunther-mcp-tools.md +0 -39
- package/.opencode/agent/agent-helga-workflow-config.md +0 -204
- package/.opencode/agent/agent-igor-activity-mover-automation.md +0 -46
- package/.opencode/agent/agent-ingrid-doc-templates.md +0 -39
- package/.opencode/agent/agent-ivan-monolith.md +0 -46
- package/.opencode/agent/agent-kenji-data-reader.md +0 -53
- package/.opencode/agent/agent-lars-code-inspector.md +0 -28
- package/.opencode/agent/agent-marco-mockup-builder.md +0 -42
- package/.opencode/agent/agent-marcus-api-documenter.md +0 -53
- package/.opencode/agent/agent-marketplace-publisher.md +0 -44
- package/.opencode/agent/agent-marketplace-reviewer.md +0 -42
- package/.opencode/agent/agent-permissions-handler.md +0 -50
- package/.opencode/agent/agent-simple-writer.md +0 -45
- package/.opencode/agent/agent-svetlana-code-review.md +0 -39
- package/.opencode/agent/agent-tanya-test-runner.md +0 -57
- package/.opencode/agent/agent-ui-designer.md +0 -56
- package/.opencode/agent/agent-viktor-sql-insights.md +0 -34
- package/.opencode/agent/agent-web-search.md +0 -42
- package/.opencode/agent/agent-yevgeni-discussions.md +0 -37
- package/.opencode/agent/agent-zara-zapier.md +0 -53
- package/.opencode/commands/app-squad.md +0 -135
- package/.opencode/commands/audit-squad.md +0 -158
- package/.opencode/commands/autoplan.md +0 -563
- package/.opencode/commands/cleanup-squad.md +0 -98
- package/.opencode/commands/config-squad.md +0 -106
- package/.opencode/commands/crud-squad.md +0 -87
- package/.opencode/commands/data-squad.md +0 -97
- package/.opencode/commands/debug-squad.md +0 -303
- package/.opencode/commands/doc-squad.md +0 -65
- package/.opencode/commands/handoff.md +0 -137
- package/.opencode/commands/health.md +0 -49
- package/.opencode/commands/help-agents.md +0 -151
- package/.opencode/commands/help-commands.md +0 -32
- package/.opencode/commands/help-faq.md +0 -29
- package/.opencode/commands/help-plugins.md +0 -28
- package/.opencode/commands/help-skills.md +0 -7
- package/.opencode/commands/help-tools.md +0 -40
- package/.opencode/commands/help.md +0 -28
- package/.opencode/commands/hotfix-squad.md +0 -112
- package/.opencode/commands/integration-squad.md +0 -82
- package/.opencode/commands/janitor-squad.md +0 -167
- package/.opencode/commands/learn-auto.md +0 -120
- package/.opencode/commands/learn.md +0 -120
- package/.opencode/commands/mcp-list.md +0 -27
- package/.opencode/commands/onboard-squad.md +0 -140
- package/.opencode/commands/plan-workspace.md +0 -732
- package/.opencode/commands/prd.md +0 -131
- package/.opencode/commands/project-status.md +0 -82
- package/.opencode/commands/publish.md +0 -138
- package/.opencode/commands/recap.md +0 -69
- package/.opencode/commands/restore.md +0 -64
- package/.opencode/commands/review-squad.md +0 -152
- package/.opencode/commands/save.md +0 -24
- package/.opencode/commands/stats.md +0 -19
- package/.opencode/commands/swarm.md +0 -210
- package/.opencode/commands/tool-builder.md +0 -39
- package/.opencode/commands/ws-pull.md +0 -44
- package/.opencode/opencode.json +0 -21
- package/inbox/failures.log +0 -1
- package/inbox/usage.jsonl +0 -4
- package/scripts/postinstall.cjs +0 -64
- package/scripts/test-hal-tools.ts +0 -154
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Design and build a Hailer app with UI Designer and Giuseppe
|
|
3
|
-
argument-hint: "app description"
|
|
4
|
-
allowed-tools: Task, Bash, Read
|
|
5
|
-
---
|
|
6
|
-
# App Squad
|
|
7
|
-
|
|
8
|
-
Sequential pipeline with data discovery, design, build, and test loop.
|
|
9
|
-
|
|
10
|
-
**Agents:**
|
|
11
|
-
1. **Kenji** - Discovers real workflow/insight schemas, field IDs, column names
|
|
12
|
-
2. **UI Designer** - Creates design spec (layout, components, aesthetic direction)
|
|
13
|
-
3. **Giuseppe** - Builds the app from the design spec + real schema data
|
|
14
|
-
4. **Tanya** - Build verification and tests (loop trigger)
|
|
15
|
-
|
|
16
|
-
**Goal:** $ARGUMENTS
|
|
17
|
-
|
|
18
|
-
## Protocol
|
|
19
|
-
|
|
20
|
-
### Step 1: Gather Context
|
|
21
|
-
|
|
22
|
-
Before spawning agents, determine:
|
|
23
|
-
- Does `workspace/` exist? If yes, this is a Hailer project.
|
|
24
|
-
- Does `apps/` directory exist? Create if needed.
|
|
25
|
-
- What workflows/data will the app use?
|
|
26
|
-
|
|
27
|
-
If context is unclear, use AskUserQuestion:
|
|
28
|
-
- What data should the app display?
|
|
29
|
-
- Authenticated or public app?
|
|
30
|
-
- Any specific layout preferences?
|
|
31
|
-
|
|
32
|
-
### Step 2: Data Discovery (Kenji)
|
|
33
|
-
|
|
34
|
-
**CRITICAL: Giuseppe MUST NOT guess IDs or column names.** Kenji looks them up first.
|
|
35
|
-
|
|
36
|
-
Spawn Kenji to discover the actual schema data the app will need:
|
|
37
|
-
|
|
38
|
-
```
|
|
39
|
-
Task(subagent_type="agent-kenji-data-reader", prompt='{"task":"app_data_discovery","description":"Look up all schema data needed for this app: $ARGUMENTS","gather":["workflow IDs and names","field IDs, labels, and types for each workflow","phase IDs and names","insight IDs and their column names (if the app uses insights)","any ActivityLink field targets"],"output":"Return a structured JSON with all IDs, field definitions, insight columns, and phase maps. This will be passed directly to the app builder."}')
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
Wait for result. Save the **schema data** output - this is passed to both UI Designer and Giuseppe.
|
|
43
|
-
|
|
44
|
-
### Step 3: Design (UI Designer)
|
|
45
|
-
|
|
46
|
-
Spawn UI Designer with the schema data so it knows what real fields/columns exist:
|
|
47
|
-
|
|
48
|
-
```
|
|
49
|
-
Task(subagent_type="agent-ui-designer", prompt="Design a Hailer app: $ARGUMENTS.\n\nAvailable data schema:\n[PASTE KENJI'S SCHEMA OUTPUT]\n\nOutput a design spec with: tone, signature element, layout structure, key components, and data flow. Reference actual field IDs and column names from the schema. Format as structured JSON that Giuseppe can consume.")
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
Wait for result. Save the design spec output.
|
|
53
|
-
|
|
54
|
-
### Step 4: Build-Test Loop
|
|
55
|
-
|
|
56
|
-
**Set:** `iteration = 1`
|
|
57
|
-
|
|
58
|
-
#### Step 4a: Giuseppe (Build)
|
|
59
|
-
|
|
60
|
-
**Before spawning Giuseppe, enable builder mode:**
|
|
61
|
-
```
|
|
62
|
-
Bash: node .claude/hooks/app-edit-guard.cjs --agent-on
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
Spawn Giuseppe with BOTH the design spec AND the schema data:
|
|
66
|
-
|
|
67
|
-
```
|
|
68
|
-
Task(subagent_type="agent-giuseppe-app-builder", prompt="Build this Hailer app using the following design spec and schema data:\n\n## Design Spec\n[PASTE FULL DESIGN SPEC FROM STEP 3]\n\n## Schema Data (from Kenji - use these EXACT IDs)\nSchema data from Kenji: [PASTE KENJI'S SCHEMA OUTPUT FROM STEP 2 - Kenji already ran in Step 2 and returned all IDs. The orchestrator doesn't need to read workspace/ directly.]\n\nApp goal: $ARGUMENTS\n\n[IF iteration > 1: Previous build failed. Here are the errors to fix:\n[PASTE TANYA'S BUILD/TEST ERRORS]\nFix these specific issues while keeping the rest of the app intact.]\n\nIMPORTANT: Use the EXACT field IDs, workflow IDs, insight IDs, and column names from the schema data above. Do NOT guess or invent any IDs.\n\nFollow the design spec for layout, components, and aesthetic. Use @hailer/app-sdk with Chakra UI and Hailer Design System.")
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
**After Giuseppe completes, disable builder mode:**
|
|
72
|
-
```
|
|
73
|
-
Bash: node .claude/hooks/app-edit-guard.cjs --agent-off
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
#### Step 4b: Tanya (Build Verification)
|
|
77
|
-
|
|
78
|
-
Spawn Tanya to verify the build:
|
|
79
|
-
|
|
80
|
-
```
|
|
81
|
-
Task(subagent_type="agent-tanya-test-runner", prompt="Verify the app build for: $ARGUMENTS.\n\nRun:\n1. TypeScript compilation (tsc --noEmit)\n2. Build (npm run build)\n3. Any existing tests (npm test if configured)\n\nReport: build pass/fail, type errors, test results.")
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
**If build PASSES:** proceed to Step 5 (report).
|
|
85
|
-
|
|
86
|
-
**If build FAILS:**
|
|
87
|
-
- Classify errors:
|
|
88
|
-
- **Code-fixable** (type errors, missing imports, wrong API usage, JSX issues): Giuseppe can handle these
|
|
89
|
-
- **Infrastructure** (missing dependency/package, wrong Node version, environment config, missing workspace data): escalate immediately to user
|
|
90
|
-
- If only infrastructure errors: skip to Step 5 with clear explanation of what the user needs to fix
|
|
91
|
-
- If code-fixable errors AND `iteration < 3`: increment iteration, go back to **Step 4a** with Tanya's error output
|
|
92
|
-
- If `iteration >= 3`: escalate to user with the remaining errors (see Step 5)
|
|
93
|
-
|
|
94
|
-
### Step 5: Report
|
|
95
|
-
|
|
96
|
-
```markdown
|
|
97
|
-
## App Squad Complete
|
|
98
|
-
|
|
99
|
-
### Loop Summary
|
|
100
|
-
- Build iterations: [count] of 3 max
|
|
101
|
-
- Final build status: PASS / FAIL (escalated)
|
|
102
|
-
|
|
103
|
-
### Design (UI Designer)
|
|
104
|
-
- Tone: [from spec]
|
|
105
|
-
- Signature element: [from spec]
|
|
106
|
-
- Components: [list]
|
|
107
|
-
|
|
108
|
-
### Build (Giuseppe)
|
|
109
|
-
- App path: [path]
|
|
110
|
-
- Build status: Pass/Fail
|
|
111
|
-
- Files created: [list]
|
|
112
|
-
- [If multiple iterations: summary of what was fixed each round]
|
|
113
|
-
|
|
114
|
-
### Verification (Tanya)
|
|
115
|
-
- TypeScript: Pass/Fail
|
|
116
|
-
- Build: Pass/Fail
|
|
117
|
-
- Tests: X passed, X failed
|
|
118
|
-
|
|
119
|
-
[If ESCALATED:]
|
|
120
|
-
### Remaining Build Errors
|
|
121
|
-
[List errors Giuseppe couldn't resolve in 3 attempts]
|
|
122
|
-
- Suggested manual fixes: [hints based on error types]
|
|
123
|
-
|
|
124
|
-
### Next Steps
|
|
125
|
-
- Run `npm run dev` to test locally
|
|
126
|
-
- Test inside Hailer iframe
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
## Notes
|
|
130
|
-
|
|
131
|
-
- Giuseppe defaults to local dev (localhost:3000). Publishing only when user explicitly asks (loads publish-hailer-app skill)
|
|
132
|
-
- **Kenji runs FIRST** to discover all real IDs - Giuseppe must NEVER guess workflow IDs, field IDs, insight IDs, or column names
|
|
133
|
-
- If the app needs an insight for public data, mention it in the goal - Kenji will look up existing insight columns
|
|
134
|
-
- Build verification catches type errors and compilation issues before the user tries to run
|
|
135
|
-
- Each iteration gives Giuseppe the specific errors to fix, avoiding repeated mistakes
|
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Run parallel security and permissions audit with Svetlana, Permissions Handler, and Gunther
|
|
3
|
-
argument-hint: [files, app name, or blank for full audit]
|
|
4
|
-
allowed-tools: Task, Bash
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Audit Squad
|
|
8
|
-
|
|
9
|
-
Parallel security and permissions audit: code hardening, access control verification, and MCP tool validation.
|
|
10
|
-
|
|
11
|
-
**Agents:**
|
|
12
|
-
- **Svetlana** - Code review (hardcoded secrets, injection vulnerabilities, insecure patterns, OWASP top 10)
|
|
13
|
-
- **Permissions Handler** - Access control audit (effective permissions, team access levels, permission matrix)
|
|
14
|
-
- **Gunther** - MCP tools security (input validation, data exposure, security best practices)
|
|
15
|
-
|
|
16
|
-
**Target:** $ARGUMENTS (if blank, use full project scope)
|
|
17
|
-
|
|
18
|
-
**Scope options:**
|
|
19
|
-
- Specific files or directory path
|
|
20
|
-
- App name (checks that app's code and permissions)
|
|
21
|
-
- Blank for full project audit
|
|
22
|
-
|
|
23
|
-
## Protocol
|
|
24
|
-
|
|
25
|
-
### Step 1: Determine Target
|
|
26
|
-
|
|
27
|
-
If `$ARGUMENTS` has specific files/directories or app name, use those.
|
|
28
|
-
Otherwise, scope is the entire project (workspace/ + apps/ + integrations/).
|
|
29
|
-
|
|
30
|
-
If `$ARGUMENTS` contains `--code-only`:
|
|
31
|
-
- Remove flag from target
|
|
32
|
-
- Skip Permissions Handler and Gunther in Step 2
|
|
33
|
-
|
|
34
|
-
If `$ARGUMENTS` contains `--permissions-only`:
|
|
35
|
-
- Remove flag from target
|
|
36
|
-
- Skip Svetlana and Gunther in Step 2
|
|
37
|
-
|
|
38
|
-
If `$ARGUMENTS` contains `--bg`:
|
|
39
|
-
- Launch all agents in background mode
|
|
40
|
-
|
|
41
|
-
### Step 2: Launch Audit Agents in Parallel
|
|
42
|
-
|
|
43
|
-
Spawn all applicable agents simultaneously using multiple Task tool calls in a single message:
|
|
44
|
-
|
|
45
|
-
**Svetlana:**
|
|
46
|
-
```
|
|
47
|
-
Task(subagent_type="agent-svetlana-code-review", prompt="Security audit of these files: [TARGET]. Focus on: hardcoded secrets, API keys, credentials, injection vulnerabilities (SQL/XSS/Command), insecure crypto usage, missing input validation, OWASP Top 10 issues, unsafe deserialization, missing authentication/authorization checks. Return verdict (PASS/FAIL), critical count, and detailed findings per file.")
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
**Permissions Handler:**
|
|
51
|
-
```
|
|
52
|
-
Task(subagent_type="agent-permissions-handler", prompt="Audit access control for the entire project. Map effective permissions: who has access to which apps, which teams have what access levels, which users are admins, workspace-wide versus app-specific permissions. Produce a permission matrix showing [User/Team] → [App] → [Access Level]. Flag any excessive or unclear permissions.")
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
**Gunther:**
|
|
56
|
-
```
|
|
57
|
-
Task(subagent_type="agent-gunther-mcp-tools", prompt="Security audit of custom MCP tools (if any exist in src/mcp/tools/). Verify: input validation with Zod schemas, no unintended data exposure, proper error handling, rate limiting awareness, secure defaults. Report security posture per tool. If no custom tools exist, report that.")
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
### Step 3: Categorize and Aggregate Results
|
|
61
|
-
|
|
62
|
-
Collect results from all agents. Categorize findings into three tiers:
|
|
63
|
-
|
|
64
|
-
**CRITICAL:**
|
|
65
|
-
- Hardcoded secrets/credentials
|
|
66
|
-
- SQL injection, XSS, command injection vulnerabilities
|
|
67
|
-
- Authentication/authorization bypasses
|
|
68
|
-
- Excessive uncontrolled permissions
|
|
69
|
-
- MCP tools exposing sensitive data
|
|
70
|
-
|
|
71
|
-
**WARNING:**
|
|
72
|
-
- Weak crypto usage
|
|
73
|
-
- Missing input sanitization
|
|
74
|
-
- Unclear permission delegations
|
|
75
|
-
- Unvalidated MCP tool inputs
|
|
76
|
-
- Missing rate limiting on tools
|
|
77
|
-
|
|
78
|
-
**INFO:**
|
|
79
|
-
- Best practice improvements
|
|
80
|
-
- Code hardening suggestions
|
|
81
|
-
- Permission clarity recommendations
|
|
82
|
-
|
|
83
|
-
### Step 4: Report
|
|
84
|
-
|
|
85
|
-
```markdown
|
|
86
|
-
## Audit Squad Report
|
|
87
|
-
|
|
88
|
-
### Scope
|
|
89
|
-
[What was audited]
|
|
90
|
-
|
|
91
|
-
### Overall Security Posture
|
|
92
|
-
[Rating: PASS / WARNING / CRITICAL]
|
|
93
|
-
- Critical findings: X
|
|
94
|
-
- Warnings: X
|
|
95
|
-
- Info items: X
|
|
96
|
-
|
|
97
|
-
### Svetlana (Code Security Review)
|
|
98
|
-
**Verdict:** PASS / FAIL / WARNINGS
|
|
99
|
-
- Critical: X [list]
|
|
100
|
-
- Warnings: X [list]
|
|
101
|
-
- Info: X [list]
|
|
102
|
-
- Files affected: [grouped summary]
|
|
103
|
-
|
|
104
|
-
### Permissions Handler (Access Control)
|
|
105
|
-
**Matrix Status:** [OK / EXCESSIVE / UNCLEAR]
|
|
106
|
-
- Total apps: X
|
|
107
|
-
- Total teams: X
|
|
108
|
-
- Users with admin access: X
|
|
109
|
-
- Flagged permissions: [list]
|
|
110
|
-
- [Permission matrix if findings exist]
|
|
111
|
-
|
|
112
|
-
### Gunther (MCP Tools Security)
|
|
113
|
-
**Status:** [No tools / PASS / WARNINGS / CRITICAL]
|
|
114
|
-
[If tools exist:]
|
|
115
|
-
- Tools audited: X
|
|
116
|
-
- Input validation issues: X
|
|
117
|
-
- Data exposure risks: X
|
|
118
|
-
- Best practice gaps: X
|
|
119
|
-
|
|
120
|
-
### Findings by Severity
|
|
121
|
-
|
|
122
|
-
#### CRITICAL (Require Immediate Action)
|
|
123
|
-
[List all critical findings with file/tool and remediation steps]
|
|
124
|
-
|
|
125
|
-
#### WARNING (Address in Next Sprint)
|
|
126
|
-
[List all warnings with context]
|
|
127
|
-
|
|
128
|
-
#### INFO (Consider for Hardening)
|
|
129
|
-
[List informational recommendations]
|
|
130
|
-
|
|
131
|
-
### Remediation Checklist
|
|
132
|
-
- [ ] [Critical issue 1]: [Action]
|
|
133
|
-
- [ ] [Critical issue 2]: [Action]
|
|
134
|
-
- [ ] [Warning 1]: [Action]
|
|
135
|
-
|
|
136
|
-
### Summary
|
|
137
|
-
[1-2 sentence overall assessment of security posture and next steps]
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
If any agent fails or times out, report partial results from successful agents, note which failed, and offer to re-run individually.
|
|
141
|
-
|
|
142
|
-
## Options
|
|
143
|
-
|
|
144
|
-
| Flag | Effect |
|
|
145
|
-
|------|--------|
|
|
146
|
-
| `--code-only` | Skip permissions and MCP tools (code review only, faster) |
|
|
147
|
-
| `--permissions-only` | Skip code review and MCP tools (permissions matrix only) |
|
|
148
|
-
| `--bg` | Run all agents in background mode |
|
|
149
|
-
|
|
150
|
-
If `--bg` is present, launch all agents with `run_in_background: true` and tell the user they'll be notified when complete.
|
|
151
|
-
|
|
152
|
-
## Notes
|
|
153
|
-
|
|
154
|
-
- Default scope is full project if no arguments provided
|
|
155
|
-
- Svetlana focuses on secrets and injection attacks; general code quality is separate (/review-squad)
|
|
156
|
-
- Permissions Handler is organization-wide - includes team and app-level settings
|
|
157
|
-
- Gunther only validates if custom MCP tools exist in the project
|
|
158
|
-
- Critical findings should block deployment; warnings should be tracked for next sprint
|