tribunal-kit 4.4.2 → 4.4.3

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 (98) hide show
  1. package/.agent/scripts/marathon_harness.js +799 -0
  2. package/.agent/scripts/prompt_compiler.js +56 -0
  3. package/.agent/skills/agent-organizer/SKILL.md +42 -0
  4. package/.agent/skills/agentic-patterns/SKILL.md +42 -0
  5. package/.agent/skills/ai-prompt-injection-defense/SKILL.md +42 -0
  6. package/.agent/skills/api-patterns/SKILL.md +42 -0
  7. package/.agent/skills/api-security-auditor/SKILL.md +42 -0
  8. package/.agent/skills/app-builder/SKILL.md +42 -0
  9. package/.agent/skills/appflow-wireframe/SKILL.md +42 -0
  10. package/.agent/skills/architecture/SKILL.md +42 -0
  11. package/.agent/skills/authentication-best-practices/SKILL.md +42 -0
  12. package/.agent/skills/backend-security-expert/SKILL.md +122 -0
  13. package/.agent/skills/bash-linux/SKILL.md +42 -0
  14. package/.agent/skills/behavioral-modes/SKILL.md +42 -0
  15. package/.agent/skills/brainstorming/SKILL.md +42 -0
  16. package/.agent/skills/building-native-ui/SKILL.md +42 -0
  17. package/.agent/skills/clean-code/SKILL.md +42 -0
  18. package/.agent/skills/code-review-checklist/SKILL.md +42 -0
  19. package/.agent/skills/config-validator/SKILL.md +42 -0
  20. package/.agent/skills/csharp-developer/SKILL.md +42 -0
  21. package/.agent/skills/data-validation-schemas/SKILL.md +42 -0
  22. package/.agent/skills/database-design/SKILL.md +42 -0
  23. package/.agent/skills/deployment-procedures/SKILL.md +42 -0
  24. package/.agent/skills/devops-engineer/SKILL.md +42 -0
  25. package/.agent/skills/devops-incident-responder/SKILL.md +42 -0
  26. package/.agent/skills/documentation-templates/SKILL.md +42 -0
  27. package/.agent/skills/edge-computing/SKILL.md +42 -0
  28. package/.agent/skills/error-resilience/SKILL.md +42 -0
  29. package/.agent/skills/extract-design-system/SKILL.md +42 -0
  30. package/.agent/skills/framer-motion-expert/SKILL.md +42 -0
  31. package/.agent/skills/frontend-design/SKILL.md +42 -0
  32. package/.agent/skills/frontend-security-expert/SKILL.md +123 -0
  33. package/.agent/skills/game-design-expert/SKILL.md +42 -0
  34. package/.agent/skills/game-engineering-expert/SKILL.md +42 -0
  35. package/.agent/skills/geo-fundamentals/SKILL.md +42 -0
  36. package/.agent/skills/github-operations/SKILL.md +42 -0
  37. package/.agent/skills/gsap-core/SKILL.md +42 -0
  38. package/.agent/skills/gsap-frameworks/SKILL.md +42 -0
  39. package/.agent/skills/gsap-performance/SKILL.md +42 -0
  40. package/.agent/skills/gsap-plugins/SKILL.md +42 -0
  41. package/.agent/skills/gsap-react/SKILL.md +42 -0
  42. package/.agent/skills/gsap-scrolltrigger/SKILL.md +42 -0
  43. package/.agent/skills/gsap-timeline/SKILL.md +42 -0
  44. package/.agent/skills/gsap-utils/SKILL.md +42 -0
  45. package/.agent/skills/i18n-localization/SKILL.md +42 -0
  46. package/.agent/skills/intelligent-routing/SKILL.md +42 -0
  47. package/.agent/skills/knowledge-graph/SKILL.md +42 -0
  48. package/.agent/skills/lint-and-validate/SKILL.md +42 -0
  49. package/.agent/skills/llm-engineering/SKILL.md +42 -0
  50. package/.agent/skills/local-first/SKILL.md +42 -0
  51. package/.agent/skills/mcp-builder/SKILL.md +42 -0
  52. package/.agent/skills/mobile-design/SKILL.md +42 -0
  53. package/.agent/skills/monorepo-management/SKILL.md +42 -0
  54. package/.agent/skills/motion-engineering/SKILL.md +42 -0
  55. package/.agent/skills/nextjs-react-expert/SKILL.md +42 -0
  56. package/.agent/skills/nodejs-best-practices/SKILL.md +42 -0
  57. package/.agent/skills/observability/SKILL.md +42 -0
  58. package/.agent/skills/parallel-agents/SKILL.md +42 -0
  59. package/.agent/skills/performance-profiling/SKILL.md +42 -0
  60. package/.agent/skills/plan-writing/SKILL.md +42 -0
  61. package/.agent/skills/platform-engineer/SKILL.md +42 -0
  62. package/.agent/skills/playwright-best-practices/SKILL.md +42 -0
  63. package/.agent/skills/powershell-windows/SKILL.md +42 -0
  64. package/.agent/skills/project-idioms/SKILL.md +42 -0
  65. package/.agent/skills/python-patterns/SKILL.md +42 -0
  66. package/.agent/skills/python-pro/SKILL.md +42 -0
  67. package/.agent/skills/react-specialist/SKILL.md +42 -0
  68. package/.agent/skills/readme-builder/SKILL.md +42 -0
  69. package/.agent/skills/realtime-patterns/SKILL.md +42 -0
  70. package/.agent/skills/red-team-tactics/SKILL.md +42 -0
  71. package/.agent/skills/rust-pro/SKILL.md +42 -0
  72. package/.agent/skills/seo-fundamentals/SKILL.md +42 -0
  73. package/.agent/skills/server-management/SKILL.md +42 -0
  74. package/.agent/skills/shadcn-ui-expert/SKILL.md +42 -0
  75. package/.agent/skills/skill-creator/SKILL.md +42 -0
  76. package/.agent/skills/sql-pro/SKILL.md +42 -0
  77. package/.agent/skills/supabase-postgres-best-practices/SKILL.md +42 -0
  78. package/.agent/skills/swiftui-expert/SKILL.md +42 -0
  79. package/.agent/skills/systematic-debugging/SKILL.md +42 -0
  80. package/.agent/skills/tailwind-patterns/SKILL.md +42 -0
  81. package/.agent/skills/tdd-workflow/SKILL.md +42 -0
  82. package/.agent/skills/test-result-analyzer/SKILL.md +42 -0
  83. package/.agent/skills/testing-patterns/SKILL.md +42 -0
  84. package/.agent/skills/trend-researcher/SKILL.md +42 -0
  85. package/.agent/skills/typescript-advanced/SKILL.md +42 -0
  86. package/.agent/skills/ui-ux-pro-max/SKILL.md +42 -0
  87. package/.agent/skills/ui-ux-researcher/SKILL.md +42 -0
  88. package/.agent/skills/vue-expert/SKILL.md +42 -0
  89. package/.agent/skills/vulnerability-scanner/SKILL.md +42 -0
  90. package/.agent/skills/web-accessibility-auditor/SKILL.md +42 -0
  91. package/.agent/skills/web-design-guidelines/SKILL.md +42 -0
  92. package/.agent/skills/webapp-testing/SKILL.md +42 -0
  93. package/.agent/skills/whimsy-injector/SKILL.md +42 -0
  94. package/.agent/skills/workflow-optimizer/SKILL.md +42 -0
  95. package/.agent/workflows/marathon.md +247 -0
  96. package/.agent/workflows/super-prompt.md +27 -0
  97. package/bin/tribunal-kit.js +47 -1
  98. package/package.json +3 -2
@@ -0,0 +1,247 @@
1
+ ---
2
+ description: Long-running agent harness for multi-session projects. Decomposes specs into atomic features tracked in JSON, ensures clean handoffs between sessions, and provides structured progress tracking. Based on Anthropic's long-running agent patterns.
3
+ ---
4
+
5
+ # /marathon — Long-Running Agent Harness
6
+
7
+ $ARGUMENTS
8
+
9
+ ---
10
+
11
+ ## When to Use /marathon
12
+
13
+ |Use `/marathon` when...|Use something else when...|
14
+ |:---|:---|
15
+ |A project requires multiple sessions to complete|Quick one-shot task → `/generate`|
16
+ |You need structured progress tracking across context windows|Single feature addition → `/enhance`|
17
+ |Building a complex app from a high-level spec|Planning without execution → `/plan`|
18
+ |Previous agent sessions lost context or declared victory too early|Brainstorming options → `/brainstorm`|
19
+
20
+ ---
21
+
22
+ ## Sub-Commands
23
+
24
+ ```
25
+ /marathon init [spec] Start a new marathon from a specification
26
+ /marathon continue Resume work: read progress, pick next feature, implement
27
+ /marathon status Show progress dashboard
28
+ /marathon reset Archive current marathon and start fresh
29
+ ```
30
+
31
+ ---
32
+
33
+ ## Phase 1: Initialize (First Session Only)
34
+
35
+ **Trigger:** `/marathon init "Build X"`
36
+
37
+ This phase runs the **Initializer Agent** pattern — a specialized first session that sets up the foundation for all future sessions.
38
+
39
+ ### Steps
40
+
41
+ 1. **Parse the specification** — Read the user's spec carefully
42
+ 2. **Decompose into atomic features** — Generate 30–200 features depending on project complexity
43
+ - Each feature must be **independently testable**
44
+ - Each must have clear **done criteria** (verification steps)
45
+ - Group by category: `core`, `auth`, `ui`, `data`, `integration`, `polish`
46
+ - All features start with `passes: false`
47
+ 3. **Create the marathon state:**
48
+ ```bash
49
+ node .agent/scripts/marathon_harness.js init "Build X"
50
+ # Then add features one by one:
51
+ node .agent/scripts/marathon_harness.js add-feature "core" "User can open a new chat" "Navigate to main page" "Click New Chat" "Verify welcome state"
52
+ node .agent/scripts/marathon_harness.js add-feature "core" "User can type and send a message" "Open chat" "Type in input" "Press Enter" "See message appear"
53
+ # ... repeat for all features
54
+ ```
55
+ 4. **Scaffold the project** — Create initial files, install dependencies
56
+ 5. **Create init.sh** — Write a bootstrap script that starts the dev environment
57
+ 6. **Initial git commit:** `git commit -m "marathon: initial scaffold for [spec]"`
58
+ 7. **Human Gate:** User reviews the feature list before proceeding
59
+
60
+ ### Feature JSON Format
61
+
62
+ Features are stored in `.agent/history/marathon/feature_list.json` as structured JSON. JSON is used instead of Markdown because agents are less likely to inappropriately modify JSON structures.
63
+
64
+ ```json
65
+ {
66
+ "id": 1,
67
+ "category": "core",
68
+ "description": "User can open a new chat and see a welcome screen",
69
+ "steps": [
70
+ "Navigate to main page",
71
+ "Click 'New Chat' button",
72
+ "Verify welcome state renders"
73
+ ],
74
+ "passes": false,
75
+ "sessionCompleted": null
76
+ }
77
+ ```
78
+
79
+ > [!CAUTION]
80
+ > **Feature descriptions are immutable.** After initialization, agents may ONLY change the `passes` field and `sessionCompleted` timestamp. It is unacceptable to remove, edit, or reorder features — this could lead to missing or buggy functionality.
81
+
82
+ ---
83
+
84
+ ## Phase 2: Get Bearings (Every Session Start)
85
+
86
+ **Trigger:** `/marathon continue`
87
+
88
+ Every new session starts by orienting the agent. This is the **Coding Agent** pattern — understanding state before making changes.
89
+
90
+ ### Steps
91
+
92
+ 1. **Read marathon state:**
93
+ ```bash
94
+ node .agent/scripts/marathon_harness.js session-start
95
+ ```
96
+ This automatically:
97
+ - Reads `progress.json` and shows what was done in previous sessions
98
+ - Reads `git log --oneline -20` for recent commits
99
+ - Shows the next unfinished feature
100
+ - Records the session start time
101
+
102
+ 2. **Start the dev environment:**
103
+ ```bash
104
+ node .agent/scripts/auto_preview.js start
105
+ ```
106
+
107
+ 3. **Smoke test basic functionality:**
108
+ - If a web app: navigate to the main page, verify it loads without errors
109
+ - If a CLI tool: run the help command, verify it outputs correctly
110
+ - If an API: hit the health check endpoint
111
+ - If browser MCP tools are available (Puppeteer), use them for visual verification
112
+
113
+ 4. **If smoke test fails:** Fix the broken state FIRST before implementing new features. The codebase must be clean before new work begins.
114
+
115
+ 5. **Announce bearings:**
116
+ ```
117
+ Session N. Progress: 12/47 features (25%).
118
+ Working on: Feature #13 [ui] — "User can toggle dark mode"
119
+ ```
120
+
121
+ ---
122
+
123
+ ## Phase 3: Implement (One Feature Per Cycle)
124
+
125
+ Work on exactly **one feature at a time**. This incremental approach prevents the common failure mode of trying to do too much at once.
126
+
127
+ ### Steps
128
+
129
+ 1. **Impact analysis** — Identify files that will be affected (per `/enhance` workflow)
130
+ 2. **Implement the feature** — Write code, following Tribunal code quality standards
131
+ 3. **Self-verify the feature:**
132
+ - Run the verification steps listed in the feature's `steps` array
133
+ - Test as a human user would (browser for web, CLI for CLI)
134
+ - Run existing tests to ensure no regressions: `npm test` or equivalent
135
+ 4. **Mark as passing:**
136
+ ```bash
137
+ node .agent/scripts/marathon_harness.js mark <id> pass
138
+ ```
139
+ 5. **Git commit** with a descriptive message:
140
+ ```bash
141
+ git commit -m "marathon: implement feature #13 — dark mode toggle"
142
+ ```
143
+ 6. **Check context budget:**
144
+ - If context allows → return to Phase 2, step 5 (pick next feature)
145
+ - If nearing context limit → proceed to Phase 4
146
+
147
+ ### If a feature cannot be completed
148
+
149
+ If a feature is blocked or too complex for the current session:
150
+ 1. Leave it as `passes: false`
151
+ 2. Add a log note explaining why:
152
+ ```bash
153
+ node .agent/scripts/marathon_harness.js log "Feature #13 blocked: requires OAuth integration not yet set up"
154
+ ```
155
+ 3. Move to the next feature or proceed to Phase 4
156
+
157
+ ---
158
+
159
+ ## Phase 4: Clean Exit (Session End)
160
+
161
+ Every session MUST leave the codebase in a clean, merge-ready state.
162
+
163
+ ### Steps
164
+
165
+ 1. **Verify clean state:**
166
+ - All code compiles without errors
167
+ - All existing tests pass
168
+ - No half-implemented features left in an intermediate state
169
+ - If something is half-done, either complete it or revert it
170
+
171
+ 2. **Record session end:**
172
+ ```bash
173
+ node .agent/scripts/marathon_harness.js session-end "Implemented dark mode, user settings page, and notification bell"
174
+ ```
175
+
176
+ 3. **Final git commit:**
177
+ ```bash
178
+ git commit -m "marathon: session N complete, 15/47 features passing"
179
+ ```
180
+
181
+ 4. **Display status dashboard** — The session-end command automatically shows progress
182
+
183
+ ---
184
+
185
+ ## Marathon Guards
186
+
187
+ ```
188
+ ❌ Never delete or edit feature descriptions — only change the passes status
189
+ ❌ Never skip the smoke test at session start — broken code must be fixed first
190
+ ❌ Never mark a feature as passing without testing it end-to-end
191
+ ❌ Never work on more than one feature at a time
192
+ ❌ Never leave the codebase in a broken state at session end
193
+ ❌ Never declare the project "done" if any feature has passes: false
194
+ ❌ Never try to one-shot the entire project — always work incrementally
195
+ ❌ Never guess what happened in previous sessions — read progress.json and git log
196
+ ```
197
+
198
+ ---
199
+
200
+ ## State Files
201
+
202
+ All marathon state is stored in `.agent/history/marathon/` (preserved on `tk update`):
203
+
204
+ ```
205
+ .agent/history/marathon/
206
+ ├── feature_list.json ← Structured feature backlog (immutable descriptions)
207
+ ├── progress.json ← Session log + progress notes
208
+ └── archive/ ← Previous marathons (after reset)
209
+ ```
210
+
211
+ ---
212
+
213
+ ## Script Reference
214
+
215
+ ```bash
216
+ # Initialize
217
+ node .agent/scripts/marathon_harness.js init "Build a task management app"
218
+
219
+ # Add features (during init phase)
220
+ node .agent/scripts/marathon_harness.js add-feature "core" "User can create a task" "Click add" "Type title" "Save"
221
+
222
+ # Session lifecycle
223
+ node .agent/scripts/marathon_harness.js session-start
224
+ node .agent/scripts/marathon_harness.js session-end "Completed auth and dashboard"
225
+
226
+ # During implementation
227
+ node .agent/scripts/marathon_harness.js next
228
+ node .agent/scripts/marathon_harness.js mark 5 pass
229
+ node .agent/scripts/marathon_harness.js log "Refactored auth to use JWT"
230
+
231
+ # Status
232
+ node .agent/scripts/marathon_harness.js status
233
+
234
+ # Archive and restart
235
+ node .agent/scripts/marathon_harness.js reset
236
+ ```
237
+
238
+ ---
239
+
240
+ ## Usage Examples
241
+
242
+ ```
243
+ /marathon init Build a full-stack clone of claude.ai with chat, settings, and themes
244
+ /marathon continue
245
+ /marathon status
246
+ /marathon reset
247
+ ```
@@ -0,0 +1,27 @@
1
+ # /super-prompt — Tokenless Prompt Compiler
2
+
3
+ Converts conversational, fluffy requests into hyper-dense YAML structures that LLMs process perfectly, reducing prompt tokens and drastically improving response accuracy. **Zero API tokens are used during compilation.**
4
+
5
+ ## Usage
6
+
7
+ Instead of typing your prompt into the AI chat directly, run the local compiler from your terminal:
8
+
9
+ ```bash
10
+ node .agent/scripts/prompt_compiler.js "Hey, could you please build a login page using React and tailwind for me?"
11
+ ```
12
+
13
+ ## Expected Output
14
+
15
+ The script strips conversational fillers and outputs a dense YAML block to your terminal instantly:
16
+
17
+ ```yaml
18
+ ---
19
+ action: build
20
+ target: login page using React and tailwind
21
+ stack: [react, tailwind]
22
+ ---
23
+ ```
24
+
25
+ ## Next Step
26
+
27
+ Copy the YAML output and paste it into the AI chat. The LLM will use this structured format to generate a highly accurate response while saving massive amounts of context window tokens!
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env node
1
+ #!/usr/bin/env node
2
2
  /**
3
3
  * tribunal-kit CLI (alias: tk)
4
4
  *
@@ -743,6 +743,9 @@ async function runWithUpdateCheck(command, flags) {
743
743
  case 'context':
744
744
  cmdContext(flags);
745
745
  break;
746
+ case 'marathon':
747
+ cmdMarathon(flags);
748
+ break;
746
749
  case 'uninstall':
747
750
  cmdUninstall(flags);
748
751
  break;
@@ -956,6 +959,7 @@ function cmdHelp() {
956
959
  log(cmd('graph', 'Build and visualize the architecture graph'));
957
960
  log(cmd('mutate', 'Run the Mutation Engine to test test-suite reliability'));
958
961
  log(cmd('context', 'Retrieve a highly-optimized Context Snapshot for a file'));
962
+ log(cmd('marathon', 'Long-running agent harness (init, status, next, mark)'));
959
963
  log(cmd('hook', 'Install pre-push git hook for auto-learning'));
960
964
  log(cmd('uninstall','Remove .agent/ folder from project'));
961
965
  console.log();
@@ -994,12 +998,54 @@ function cmdHelp() {
994
998
  log(ex('tk case overrule --id 1'));
995
999
  log(ex('tk graph'));
996
1000
  log(ex('tk mutate src/utils.js "npm test"'));
1001
+ log(ex('tk marathon init "Build a todo app"'));
1002
+ log(ex('tk marathon status'));
1003
+ log(ex('tk marathon next'));
1004
+ log(ex('tk marathon mark 5 pass'));
997
1005
  log(ex('tk hook'));
998
1006
  log(ex('tk uninstall'));
999
1007
  console.log();
1000
1008
  }
1001
1009
 
1002
1010
 
1011
+ function cmdMarathon(flags) {
1012
+ const targetDir = flags.path ? path.resolve(flags.path) : process.cwd();
1013
+ const agentDest = path.join(targetDir, '.agent');
1014
+
1015
+ if (!fs.existsSync(agentDest)) {
1016
+ err('.agent/ not found. Run: npx tribunal-kit init');
1017
+ process.exit(1);
1018
+ }
1019
+
1020
+ const args = process.argv.slice(3);
1021
+ const argsStr = args.join(' ');
1022
+ if (args.length === 0 || args[0] === 'help' || args[0] === '--help' || args[0] === '-h') {
1023
+ banner();
1024
+ log(` ${c('cyan', '╔' + '═'.repeat(60) + '╗')}`);
1025
+ log(` ${c('cyan', '║')}${c('bold', c('white', ' Marathon — Long-Running Agent Harness '))}${c('cyan', '║')}`);
1026
+ log(` ${c('cyan', '╚' + '═'.repeat(60) + '╝')}`);
1027
+ console.log();
1028
+ log(` ${c('cyan', 'init'.padEnd(16))} ${c('gray', 'Start a new marathon (init "spec")')}`);
1029
+ log(` ${c('cyan', 'status'.padEnd(16))} ${c('gray', 'Show progress dashboard')}`);
1030
+ log(` ${c('cyan', 'next'.padEnd(16))} ${c('gray', 'Show next unfinished feature')}`);
1031
+ log(` ${c('cyan', 'mark'.padEnd(16))} ${c('gray', 'Mark feature pass/fail (mark <id> pass)')}`);
1032
+ log(` ${c('cyan', 'log'.padEnd(16))} ${c('gray', 'Add a progress note')}`);
1033
+ log(` ${c('cyan', 'session-start'.padEnd(16))} ${c('gray', 'Begin a new work session')}`);
1034
+ log(` ${c('cyan', 'session-end'.padEnd(16))} ${c('gray', 'End session with summary')}`);
1035
+ log(` ${c('cyan', 'add-feature'.padEnd(16))} ${c('gray', 'Add feature: "category" "desc" "step1" ...')}`);
1036
+ log(` ${c('cyan', 'reset'.padEnd(16))} ${c('gray', 'Archive and start fresh')}`);
1037
+ console.log();
1038
+ return;
1039
+ }
1040
+
1041
+ const marathonScript = path.join(agentDest, 'scripts', 'marathon_harness.js');
1042
+ try {
1043
+ execSync(`node "${marathonScript}" ${argsStr}`, { stdio: 'inherit', cwd: targetDir });
1044
+ } catch {
1045
+ process.exit(1);
1046
+ }
1047
+ }
1048
+
1003
1049
  function cmdContext(flags) {
1004
1050
  const targetDir = flags.path ? path.resolve(flags.path) : process.cwd();
1005
1051
  const agentDest = path.join(targetDir, '.agent');
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "tribunal-kit",
3
- "version": "4.4.2",
4
- "description": "Anti-Hallucination AI Agent Kit — 40 specialist agents, 31 slash commands, 16 parallel Tribunal reviewers, Performance Swarm engine, and Supreme Court case law pipeline.",
3
+ "version": "4.4.3",
4
+ "description": "Anti-Hallucination AI Agent Kit — 40 specialist agents, 32 slash commands, 16 parallel Tribunal reviewers, Performance Swarm engine, Supreme Court case law pipeline, and long-running agent harness.",
5
5
  "keywords": [
6
6
  "ai",
7
7
  "ai-agent",
8
+ "long-running-agents",
8
9
  "agent",
9
10
  "agents",
10
11
  "multi-agent",