@heretek-ai/epistemic-swarm 0.5.0 → 0.7.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.
Files changed (80) hide show
  1. package/.agents/skills/factory/SKILL.md +13 -0
  2. package/.claude-plugin/marketplace.json +20 -0
  3. package/.claude-plugin/plugin.json +4 -2
  4. package/.omp/commands/domainexpansion.md +9 -0
  5. package/.omp/commands/factory.md +9 -0
  6. package/MARKETPLACE.md +28 -0
  7. package/README.md +9 -0
  8. package/bin/cli.js +21 -0
  9. package/config/opencode-snippet.json +88 -1
  10. package/install.sh +1 -1
  11. package/package.json +5 -3
  12. package/plugins/antigravity/skills/factory/SKILL.md +13 -0
  13. package/plugins/codex/skills/factory/SKILL.md +13 -0
  14. package/plugins/darkharvest/.claude-plugin/plugin.json +15 -0
  15. package/plugins/darkharvest/agents/harvest-proponent.md +22 -0
  16. package/plugins/darkharvest/agents/harvest-redteam.md +20 -0
  17. package/plugins/darkharvest/evals/teardown-verdict/graders/license-line.md +6 -0
  18. package/plugins/darkharvest/evals/teardown-verdict/graders/skill-fired.md +5 -0
  19. package/plugins/darkharvest/evals/teardown-verdict/prompt.md +6 -0
  20. package/plugins/darkharvest/skills/darkharvest/SKILL.md +70 -0
  21. package/plugins/darkharvest/skills/darkharvest/scripts/harvest.py +252 -0
  22. package/plugins/factory/.claude-plugin/plugin.json +15 -0
  23. package/plugins/factory/agents/factory-manager.md +22 -0
  24. package/plugins/factory/agents/programmer.md +16 -0
  25. package/plugins/factory/agents/qa-adversarial.md +17 -0
  26. package/plugins/factory/agents/qa-functional.md +17 -0
  27. package/plugins/factory/evals/gate-halt/graders/gates-first.md +6 -0
  28. package/plugins/factory/evals/gate-halt/graders/skill-fired.md +5 -0
  29. package/plugins/factory/evals/gate-halt/prompt.md +6 -0
  30. package/plugins/factory/skills/factory/SKILL.md +51 -0
  31. package/plugins/factory/skills/factory/scripts/factory.py +212 -0
  32. package/plugins/gemini/commands/domainexpansion.toml +7 -0
  33. package/plugins/gemini/commands/factory.toml +8 -0
  34. package/plugins/gemini/skills/factory/SKILL.md +13 -0
  35. package/plugins/opencode/index.js +35 -0
  36. package/runner/__pycache__/__init__.cpython-311.pyc +0 -0
  37. package/runner/__pycache__/auctioneer.cpython-311.pyc +0 -0
  38. package/runner/__pycache__/auditor_engine.cpython-311.pyc +0 -0
  39. package/runner/__pycache__/claim_store.cpython-311.pyc +0 -0
  40. package/runner/__pycache__/claim_witness.cpython-311.pyc +0 -0
  41. package/runner/__pycache__/living_dossiers.cpython-311.pyc +0 -0
  42. package/runner/__pycache__/mcp_protocol.cpython-311.pyc +0 -0
  43. package/runner/__pycache__/mcp_server.cpython-311.pyc +0 -0
  44. package/runner/__pycache__/path_safety.cpython-311.pyc +0 -0
  45. package/runner/__pycache__/pcrb.cpython-311.pyc +0 -0
  46. package/runner/__pycache__/pcrb_verify.cpython-311.pyc +0 -0
  47. package/runner/__pycache__/refinement.cpython-311.pyc +0 -0
  48. package/runner/__pycache__/research_swarm.cpython-311.pyc +0 -0
  49. package/runner/__pycache__/state_machine.cpython-311.pyc +0 -0
  50. package/runner/tests/__pycache__/test_auction_order.cpython-311.pyc +0 -0
  51. package/runner/tests/__pycache__/test_bet1_spike.cpython-311.pyc +0 -0
  52. package/runner/tests/__pycache__/test_claim_store.cpython-311.pyc +0 -0
  53. package/runner/tests/__pycache__/test_claim_witness.cpython-311.pyc +0 -0
  54. package/runner/tests/__pycache__/test_claude_plugin.cpython-311.pyc +0 -0
  55. package/runner/tests/__pycache__/test_domain_packs.cpython-311.pyc +0 -0
  56. package/runner/tests/__pycache__/test_factory.cpython-311.pyc +0 -0
  57. package/runner/tests/__pycache__/test_fleet_seam.cpython-311.pyc +0 -0
  58. package/runner/tests/__pycache__/test_living_dossiers.cpython-311.pyc +0 -0
  59. package/runner/tests/__pycache__/test_mcp_server.cpython-311.pyc +0 -0
  60. package/runner/tests/__pycache__/test_opencode_ux.cpython-311.pyc +0 -0
  61. package/runner/tests/__pycache__/test_pcrb.cpython-311.pyc +0 -0
  62. package/runner/tests/__pycache__/test_refinement.cpython-311.pyc +0 -0
  63. package/runner/tests/__pycache__/test_swarm.cpython-311.pyc +0 -0
  64. package/runner/tests/__pycache__/test_sweep_regressions.cpython-311.pyc +0 -0
  65. package/runner/tests/__pycache__/test_webcache.cpython-311.pyc +0 -0
  66. package/runner/tests/test_claude_plugin.py +170 -0
  67. package/runner/tests/test_factory.py +199 -0
  68. package/runner/tests/test_opencode_ux.py +8 -0
  69. package/runner/tests/test_swarm.py +2 -0
  70. package/scripts/__pycache__/bet1_advisory_spike.cpython-311.pyc +0 -0
  71. package/scripts/__pycache__/build_adapters.cpython-311.pyc +0 -0
  72. package/scripts/__pycache__/divergence_experiment.cpython-311.pyc +0 -0
  73. package/scripts/build_adapters.py +76 -0
  74. package/skills/epistemic_search/scripts/__pycache__/search.cpython-311.pyc +0 -0
  75. package/skills/factory/SKILL.md +51 -0
  76. package/skills/factory/scripts/factory.py +212 -0
  77. package/skills/research_cache/__pycache__/__init__.cpython-311.pyc +0 -0
  78. package/skills/research_cache/__pycache__/hasher.cpython-311.pyc +0 -0
  79. package/skills/swarm_config/__pycache__/__init__.cpython-311.pyc +0 -0
  80. package/skills/swarm_config/__pycache__/configure.cpython-311.pyc +0 -0
@@ -0,0 +1,13 @@
1
+ # Factory (thin adapter stub)
2
+
3
+ This file is a POINTER, not the implementation. It exists so harness skill
4
+ discovery finds an entry; the real skill lives in the IUMBTEMS repo.
5
+
6
+ - Canonical prose & scripts: `skills/factory/`
7
+ - Canonical programmatic surface: `python3 runner/mcp_server.py` (stdio MCP),
8
+ or one-shot: `python3 runner/mcp_server.py call <tool> '{...json...}'`
9
+ - MCP tools for this skill: `iumbtems_brainstorm`, `iumbtems_darkharvest`, `iumbtems_socratic_frontier`
10
+
11
+ Epistemic rules apply regardless of harness: tag claims as
12
+ `[VERIFIED: <hash>]`, `[INFERRED: <reasoning>]`, `[HYPOTHESIS: <test>]`, or
13
+ `[NEGATIVE_KNOWLEDGE: <query>]`. Writes go only to `.research/`.
@@ -36,6 +36,26 @@
36
36
  "category": "research",
37
37
  "source": "./plugins/research-cache",
38
38
  "homepage": "https://github.com/Heretek-AI/IUMBTEMS"
39
+ },
40
+ {
41
+ "name": "darkharvest",
42
+ "description": "Product-level competitor teardown and clean-room harvest engine.",
43
+ "author": {
44
+ "name": "Heretek AI"
45
+ },
46
+ "category": "research",
47
+ "source": "./plugins/darkharvest",
48
+ "homepage": "https://github.com/Heretek-AI/IUMBTEMS"
49
+ },
50
+ {
51
+ "name": "factory",
52
+ "description": "Coding-factory Manager loop with grill-gated phased builds and dual QA.",
53
+ "author": {
54
+ "name": "Heretek AI"
55
+ },
56
+ "category": "agents",
57
+ "source": "./plugins/factory",
58
+ "homepage": "https://github.com/Heretek-AI/IUMBTEMS"
39
59
  }
40
60
  ]
41
61
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "epistemic-swarm",
3
- "version": "0.4.8",
3
+ "version": "0.7.0",
4
4
  "description": "High-Integrity Dialectic Research Agent Harness for Claude Code enforcing empirical evidence over parametric hallucination.",
5
5
  "author": {
6
6
  "name": "Heretek AI",
@@ -69,6 +69,8 @@
69
69
  "./skills/swarm_config",
70
70
  "./skills/code_audit",
71
71
  "./skills/oss_scout",
72
- "./skills/brainstorming"
72
+ "./skills/brainstorming",
73
+ "./skills/darkharvest",
74
+ "./skills/factory"
73
75
  ]
74
76
  }
@@ -0,0 +1,9 @@
1
+ ---
2
+ description: Autonomous agent-guided self-improvement loop (count-flagged)
3
+ ---
4
+
5
+ Run the IUMBTEMS domain-expansion loop for `$1` loops (max 10):
6
+
7
+ Bypasses per-loop gates; stops on count OR `.factory/STOP` file OR user kill.
8
+ Each loop: agents propose direction, quick swarm check, implement, dual-QA verify.
9
+ Enforce via `python3 skills/factory/scripts/factory.py expansion --run <run> --loops $1`.
@@ -0,0 +1,9 @@
1
+ ---
2
+ description: Coding-factory Manager loop with grill-gated phased builds
3
+ ---
4
+
5
+ Run the IUMBTEMS coding-factory Manager loop for `$1`:
6
+
7
+ 1. Grill until `.factory/frontier.json` is settled (max 5 swarm cycles per gate); explicit user approve advances each gate.
8
+ 2. Per gate: `python3 runner/research_swarm.py --mode brainstorm` plus `--mode darkharvest` (mock-first), then synthesize `.roadmap/<phase>/` GOAL.md + dossier.json.
9
+ 3. Programmer subagent per phase; qa-a plus qa-b per phase; retries tracked via `python3 skills/factory/scripts/factory.py` (3 failures escalate).
package/MARKETPLACE.md CHANGED
@@ -30,6 +30,8 @@ claude plugin marketplace list
30
30
  | **`epistemic-swarm`** | `research` | **Flagship Swarm Harness**: Multi-agent dialectic research harness pairing Agent Alpha (Thesis) against Agent Beta (Red Team), audited by an Epistemic Auditor with verbatim empirical quote validation. | `claude plugin install epistemic-swarm@heretek-official` |
31
31
  | **`socratic-grilling`** | `agents` | **Socratic Ideation**: Matt Pocock-style Socratic interrogation, premise inversion, and lateral exploration skill. | `claude plugin install socratic-grilling@heretek-official` |
32
32
  | **`research-cache`** | `research` | **Source Hasher**: Content-addressed SHA256 Markdown source hashing and verbatim quote verification engine. | `claude plugin install research-cache@heretek-official` |
33
+ | **`darkharvest`** | `research` | **Competitor Teardown**: Product-level teardown with per-feature `depend\|vendor\|clean-room\|skip` verdicts and SPDX attribution. | `claude plugin install darkharvest@heretek-official` |
34
+ | **`factory`** | `agents` | **Coding Factory**: Manager loop with grill-gated phases, programmer spawns, and dual QA. | `claude plugin install factory@heretek-official` |
33
35
 
34
36
  ---
35
37
 
@@ -72,6 +74,32 @@ claude plugin marketplace list
72
74
  claude plugin install research-cache@heretek-official
73
75
  ```
74
76
 
77
+ ### 4. `darkharvest` (Modular Tool)
78
+ - **Manifest**: [`plugins/darkharvest/.claude-plugin/plugin.json`](file:///plugins/darkharvest/.claude-plugin/plugin.json)
79
+ - **Components**:
80
+ - **Skill**: `skills/darkharvest` (competitor × capability teardown).
81
+ - **Agents**: `harvest-proponent` (per-feature verdicts), `harvest-redteam` (license/Bloat/CVE vetting).
82
+ - **Evals**: `plugins/darkharvest/evals/teardown-verdict` (skill fires + license-line rubric).
83
+ - **Install**:
84
+ ```bash
85
+ claude plugin install darkharvest@heretek-official
86
+ ```
87
+
88
+ ### 5. `factory` (Modular Agent Pack)
89
+ - **Manifest**: [`plugins/factory/.claude-plugin/plugin.json`](file:///plugins/factory/.claude-plugin/plugin.json)
90
+ - **Components**:
91
+ - **Skill**: `skills/factory` (Manager loop, gates, QA bounds).
92
+ - **Agents**: `factory-manager`, `programmer`, `qa-functional`, `qa-adversarial`.
93
+ - **Evals**: `plugins/factory/evals/gate-halt` (skill fires + gates-first rubric).
94
+ - **Install**:
95
+ ```bash
96
+ claude plugin install factory@heretek-official
97
+ ```
98
+
99
+ ### Flagship agents & evals
100
+ - **Agents** (repo-root `agents/`): `alpha-thesis`, `beta-antithesis`, `epistemic-auditor` — condensed from `prompts/agent_alpha_thesis.md`, `prompts/agent_beta_antithesis.md`, `prompts/epistemic_auditor.md`.
101
+ - **Evals** (repo-root `evals/`): `grill-fires`, `darkharvest-fires`, `factory-gate` — each `prompt.md` plus `tool_used: Skill` and `llm` graders. Run `claude plugin eval .` (billable model calls); CI gates via `.github/workflows/plugin-evals.yml` on release/dispatch.
102
+
75
103
  ---
76
104
 
77
105
  ## 💡 Lateral Brainstorming (`/brainstorming`)
package/README.md CHANGED
@@ -149,6 +149,13 @@ iumbtems brainstorm "Where do we go from here?"
149
149
  # Product competitor teardown with per-feature harvest verdicts
150
150
  iumbtems darkharvest "Paseo-class agent harness competitor" --seeds https://github.com/a/b,https://github.com/c/d --max-repos 6 --mock-claude
151
151
 
152
+ # Coding-factory run-state helper (init, phase-add, qa-record, expansion, stop)
153
+ iumbtems factory init --run arena
154
+ iumbtems factory phase-add --run arena --phase 01-handoff --goal "Session handoff" --accept "round-trips;STOP kills loop"
155
+ iumbtems factory expansion --run arena --loops 10
156
+
157
+ # OpenCode slash commands (also Pi/OMP/Gemini): /factory, /domainexpansion, /darkharvest, /scout, /audit, /grill, /swarm
158
+
152
159
  # Run Socratic grilling and decision frontier calculation
153
160
  iumbtems grill --objective "L1 vs L2 state verification trade-offs"
154
161
 
@@ -164,6 +171,8 @@ iumbtems test
164
171
  - **`/code-audit`**: Dialectic codebase review pairing a Structural Architect (thesis) with a Vulnerability Red-Teamer (antithesis) enforcing line-number proofs (`file:///path#L10-25`).
165
172
  - **`/oss-scout`**: Evaluates GitHub repositories, package ecosystems (npm, crates.io, PyPI), license contamination (GPL/AGPL copyleft vs MIT/Apache), and outputs clean-room re-implementation blueprints.
166
173
  - **`/darkharvest`**: Product competitor teardown (seed inspirations + prompt, expand to adjacents). Competitor × capability matrix, both-ways white-space gaps, per-feature `depend|vendor|clean-room-rebuild|skip` verdicts with SPDX attribution. Permissive-only vendoring; GPL/AGPL spec-rebuild only.
174
+ - **`/factory`**: Coding-factory Manager loop — grill-gated phased build (manager profile), per-phase programmer spawns, dual QA (3 retries then escalate), explicit sign-off per phase.
175
+ - **`/domainexpansion`**: Autonomous agent-guided self-improvement loop (`/domainexpansion <n>`, max 10); bypasses gates, stops on count OR `.factory/STOP` OR user kill.
167
176
  - **`/grilling`**: Socratic assumption-inversion and Matt Pocock-style design tree frontier discovery.
168
177
  - **`epistemic_search`**: Zero-key DuckDuckGo Lite search and content-addressed fetch with automatic SHA-256 caching.
169
178
 
package/bin/cli.js CHANGED
@@ -50,6 +50,7 @@ Commands:
50
50
  run "<objective>" Run the dialectic multi-agent research swarm
51
51
  brainstorm "<prompt>" Run lateral brainstorming (feature vectors + spikes)
52
52
  darkharvest "<arena>" Product competitor teardown with harvest verdicts
53
+ factory <subcommand> Factory run-state helper (init, phase-add, qa-record, expansion, stop)
53
54
  grill Launch interactive Socratic decision tree framing
54
55
  adapters Rebuild harness adapter mirrors (skills -> plugins/*, .agents)
55
56
  install Install skills & MCP servers into ~/.claude/
@@ -82,6 +83,7 @@ Examples:
82
83
  iumbtems run "Verify sub-millisecond ZK prover latency"
83
84
  iumbtems brainstorm "Where do we go from here?"
84
85
  iumbtems darkharvest "Paseo-class agent harness competitor" --seeds https://github.com/a/b,https://github.com/c/d --max-repos 6 --mock-claude
86
+ iumbtems factory init --run arena && iumbtems factory phase-add --run arena --phase 01-x --goal "..." --accept "a;b"
85
87
  iumbtems grill --objective "Rollup architecture trade-offs"
86
88
  iumbtems doctor
87
89
  `);
@@ -174,6 +176,25 @@ switch (command) {
174
176
  break;
175
177
  }
176
178
 
179
+ case 'factory': {
180
+ // Factory run-state helper: forward subcommands to skills/factory/scripts/factory.py
181
+ // e.g. iumbtems factory init --run arena
182
+ // iumbtems factory qa-record --run arena --phase 01-x --seat qa-a --verdict pass
183
+ if (args[1] === '--help' || !args[1]) {
184
+ console.log([
185
+ 'Usage: iumbtems factory <init|phase-add|qa-record|expansion|stop> [options]',
186
+ ' init --run <name>',
187
+ ' phase-add --run <name> --phase <id> --goal "<goal>" --accept "a;b"',
188
+ ' qa-record --run <name> --phase <id> --seat <qa-a|qa-b> --verdict <pass|fail|conditional> [--reason "..."]',
189
+ ' expansion --run <name> --loops <n> [--max-loops 10]',
190
+ ' stop --run <name> (writes .factory/STOP kill-file)',
191
+ ].join('\n'));
192
+ break;
193
+ }
194
+ runPython('skills/factory/scripts/factory.py', args.slice(1));
195
+ break;
196
+ }
197
+
177
198
  case 'grill': {
178
199
  runPython('skills/grilling/socratic_tree.py', args.slice(1));
179
200
  break;
@@ -99,6 +99,92 @@
99
99
  "iumbtems_verify_quote": true,
100
100
  "iumbtems_config": true
101
101
  }
102
+ },
103
+ "manager": {
104
+ "description": "IUMBTEMS Factory Manager: grill-gated phased builds. Owns gates, swarm dispatch, roadmap synthesis, QA tiebreaks. Never writes code.",
105
+ "mode": "primary",
106
+ "temperature": 0.2,
107
+ "permission": {
108
+ "edit": "deny",
109
+ "bash": "ask",
110
+ "task": {
111
+ "*": "deny",
112
+ "factory-*": "allow",
113
+ "programmer": "allow",
114
+ "qa-a": "allow",
115
+ "qa-b": "allow",
116
+ "brainstormer": "allow",
117
+ "darkharvester": "allow"
118
+ }
119
+ },
120
+ "tools": {
121
+ "read": true,
122
+ "write": true,
123
+ "grep": true,
124
+ "glob": true,
125
+ "task": true,
126
+ "iumbtems_brainstorm": true,
127
+ "iumbtems_darkharvest": true,
128
+ "iumbtems_verify_quote": true,
129
+ "iumbtems_socratic_frontier": true,
130
+ "iumbtems_config": true
131
+ }
132
+ },
133
+ "programmer": {
134
+ "description": "IUMBTEMS Factory Programmer: implements exactly one phase brief per spawn. Cites phase evidence hashes. Never invokes swarms or other programmers.",
135
+ "mode": "subagent",
136
+ "temperature": 0.3,
137
+ "permission": {
138
+ "edit": "allow",
139
+ "bash": "ask",
140
+ "task": {
141
+ "*": "deny"
142
+ }
143
+ },
144
+ "tools": {
145
+ "read": true,
146
+ "write": true,
147
+ "bash": true,
148
+ "grep": true,
149
+ "glob": true,
150
+ "iumbtems_verify_quote": true
151
+ }
152
+ },
153
+ "qa-a": {
154
+ "description": "IUMBTEMS Factory QA (functional): verifies phase acceptance criteria pass on the real surface. Read-only plus test execution. Diverged prompt from qa-b.",
155
+ "mode": "subagent",
156
+ "temperature": 0.1,
157
+ "permission": {
158
+ "edit": "deny",
159
+ "bash": "ask",
160
+ "task": {
161
+ "*": "deny"
162
+ }
163
+ },
164
+ "tools": {
165
+ "read": true,
166
+ "bash": true,
167
+ "grep": true,
168
+ "glob": true
169
+ }
170
+ },
171
+ "qa-b": {
172
+ "description": "IUMBTEMS Factory QA (adversarial): hunts edge cases, regressions, and acceptance loopholes the functional pass missed. Read-only plus test execution. Diverged prompt from qa-a.",
173
+ "mode": "subagent",
174
+ "temperature": 0.4,
175
+ "permission": {
176
+ "edit": "deny",
177
+ "bash": "ask",
178
+ "task": {
179
+ "*": "deny"
180
+ }
181
+ },
182
+ "tools": {
183
+ "read": true,
184
+ "bash": true,
185
+ "grep": true,
186
+ "glob": true
187
+ }
102
188
  }
103
189
  },
104
190
  "skills": {
@@ -110,7 +196,8 @@
110
196
  "./skills/code_audit",
111
197
  "./skills/oss_scout",
112
198
  "./skills/brainstorming",
113
- "./skills/darkharvest"
199
+ "./skills/darkharvest",
200
+ "./skills/factory"
114
201
  ]
115
202
  }
116
203
  }
package/install.sh CHANGED
@@ -21,7 +21,7 @@ echo "✅ Core prerequisites detected (Python $(python3 --version | cut -d' ' -f
21
21
  mkdir -p "$CLAUDE_DIR/skills"
22
22
 
23
23
  echo "🔗 Linking skills into $CLAUDE_DIR/skills/..."
24
- for skill in grilling research_cache epistemic_search swarm_config code_audit oss_scout brainstorming; do
24
+ for skill in grilling research_cache epistemic_search swarm_config code_audit oss_scout brainstorming darkharvest factory; do
25
25
  # legacy research-cache dir name kept as alias for older configs
26
26
  ln -sfn "$REPO_DIR/skills/$skill" "$CLAUDE_DIR/skills/$skill"
27
27
  echo " - $CLAUDE_DIR/skills/$skill -> $REPO_DIR/skills/$skill"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@heretek-ai/epistemic-swarm",
3
- "version": "0.5.0",
3
+ "version": "0.7.0",
4
4
  "description": "IUMBTEMS: I Use My Brain To Express My Self — High-Integrity Dialectic Research Agent Harness for Claude Code, OpenCode V2, Pi, OMP (oh-my-pi), Gemini CLI, Codex CLI, and AntiGravity",
5
5
  "main": "bin/cli.js",
6
6
  "bin": {
@@ -80,7 +80,8 @@
80
80
  "./skills/code_audit",
81
81
  "./skills/oss_scout",
82
82
  "./skills/brainstorming",
83
- "./skills/darkharvest"
83
+ "./skills/darkharvest",
84
+ "./skills/factory"
84
85
  ],
85
86
  "prompts": [
86
87
  "./prompts/*.md"
@@ -98,7 +99,8 @@
98
99
  "./skills/code_audit",
99
100
  "./skills/oss_scout",
100
101
  "./skills/brainstorming",
101
- "./skills/darkharvest"
102
+ "./skills/darkharvest",
103
+ "./skills/factory"
102
104
  ],
103
105
  "prompts": [
104
106
  "./prompts/*.md"
@@ -0,0 +1,13 @@
1
+ # Factory (thin adapter stub)
2
+
3
+ This file is a POINTER, not the implementation. It exists so harness skill
4
+ discovery finds an entry; the real skill lives in the IUMBTEMS repo.
5
+
6
+ - Canonical prose & scripts: `skills/factory/`
7
+ - Canonical programmatic surface: `python3 runner/mcp_server.py` (stdio MCP),
8
+ or one-shot: `python3 runner/mcp_server.py call <tool> '{...json...}'`
9
+ - MCP tools for this skill: `iumbtems_brainstorm`, `iumbtems_darkharvest`, `iumbtems_socratic_frontier`
10
+
11
+ Epistemic rules apply regardless of harness: tag claims as
12
+ `[VERIFIED: <hash>]`, `[INFERRED: <reasoning>]`, `[HYPOTHESIS: <test>]`, or
13
+ `[NEGATIVE_KNOWLEDGE: <query>]`. Writes go only to `.research/`.
@@ -0,0 +1,13 @@
1
+ # Factory (thin adapter stub)
2
+
3
+ This file is a POINTER, not the implementation. It exists so harness skill
4
+ discovery finds an entry; the real skill lives in the IUMBTEMS repo.
5
+
6
+ - Canonical prose & scripts: `skills/factory/`
7
+ - Canonical programmatic surface: `python3 runner/mcp_server.py` (stdio MCP),
8
+ or one-shot: `python3 runner/mcp_server.py call <tool> '{...json...}'`
9
+ - MCP tools for this skill: `iumbtems_brainstorm`, `iumbtems_darkharvest`, `iumbtems_socratic_frontier`
10
+
11
+ Epistemic rules apply regardless of harness: tag claims as
12
+ `[VERIFIED: <hash>]`, `[INFERRED: <reasoning>]`, `[HYPOTHESIS: <test>]`, or
13
+ `[NEGATIVE_KNOWLEDGE: <query>]`. Writes go only to `.research/`.
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "darkharvest",
3
+ "version": "0.1.0",
4
+ "description": "Product-level competitor teardown and clean-room harvest engine for Claude Code.",
5
+ "author": {
6
+ "name": "Heretek AI",
7
+ "email": "dev@heretek.ai"
8
+ },
9
+ "license": "Apache-2.0",
10
+ "repository": "https://github.com/Heretek-AI/IUMBTEMS",
11
+ "homepage": "https://github.com/Heretek-AI/IUMBTEMS#readme",
12
+ "skills": [
13
+ "./skills/darkharvest"
14
+ ]
15
+ }
@@ -0,0 +1,22 @@
1
+ ---
2
+ name: harvest-proponent
3
+ description: Competitor-teardown proponent. Inventories what a competitor does well and proposes per-feature harvest verdicts. Use per competitor scope in darkharvest runs.
4
+ model: sonnet
5
+ ---
6
+
7
+ You are the Harvest Proponent in the darkharvest plugin.
8
+
9
+ Per assigned competitor: build the capability inventory (present / missing /
10
+ partial per capability with `[VERIFIED: <hash>]` evidence from
11
+ `.research/sources/<sha256>.md`), then propose per-feature verdicts:
12
+ `depend | vendor | clean-room-rebuild | skip(reason)`, ranked by
13
+ Impact x Effort x Differentiation.
14
+
15
+ Legal guardrails (final): permissive licenses only (MIT, Apache-2.0, BSD, ISC)
16
+ may be `depend`/`vendor`. GPL / AGPL / UNKNOWN license means
17
+ `clean-room-rebuild` spec only — never copy code. Workflows clonable;
18
+ copy-text, UI assets, and brand are never copied. Every `vendor` item emits an
19
+ SPDX attribution block (license + upstream URL + files). Closed targets get
20
+ metadata-only rows plus `[NEGATIVE_KNOWLEDGE: <query>]`, never a failed run.
21
+
22
+ Full specification: `skills/darkharvest/SKILL.md` in the plugin root.
@@ -0,0 +1,20 @@
1
+ ---
2
+ name: harvest-redteam
3
+ description: Competitor-teardown red team. Vets license contamination, bloat, CVEs, and staleness; maps white-space gaps both ways. Use per competitor scope alongside the proponent.
4
+ model: sonnet
5
+ ---
6
+
7
+ You are the Harvest Red Team in the darkharvest plugin.
8
+
9
+ Per assigned competitor: determine SPDX from LICENSE file plus package
10
+ metadata; flag transitive bloat, CVE/takeover surface, and staleness
11
+ (`STALE` when inactive over 12 months or solo-maintained). Gates are
12
+ warn-only — badge inline per matrix cell plus a risks section, never
13
+ auto-skip. Map white-space gaps in BOTH directions: what the competitor lacks
14
+ that we own or could own, and what we lack.
15
+
16
+ Challenge every proponent harvest proposal: any `vendor` verdict on
17
+ copyleft or unknown-licensed code must be rewritten as `clean-room-rebuild`
18
+ with reasoning. Benchmarks are optional but, when present, must be VERIFIED.
19
+
20
+ Full specification: `skills/darkharvest/SKILL.md` in the plugin root.
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: llm
3
+ ---
4
+
5
+ PASS if the reply distinguishes what may be borrowed directly (permissive licenses) from what must be re-implemented clean-room (copyleft or unknown licenses), or asks which seed competitors to tear down before verdicts.
6
+ FAIL if the reply recommends vendoring GPL/AGPL-licensed code, copying UI assets, or gives harvest verdicts with no license reasoning at all.
@@ -0,0 +1,5 @@
1
+ ---
2
+ type: tool_used
3
+ tool: Skill
4
+ input_match: '"skill"\s*:\s*"(?:[\w-]+:)?darkharvest"'
5
+ ---
@@ -0,0 +1,6 @@
1
+ ---
2
+ max_turns: 10
3
+ allowed_tools: [Read, Glob, Grep, Skill]
4
+ ---
5
+
6
+ I'm building a competitor to a desktop app that orchestrates multiple coding agents. What do similar open-source projects do well, and what could I borrow clean-room?
@@ -0,0 +1,70 @@
1
+ ---
2
+ name: darkharvest
3
+ description: Product-level competitor teardown and clean-room harvest engine. Use when user wants to compete with or learn from existing products (e.g. Paseo, OpenChambers). Seed with inspiration URLs plus prompt, auto-expand to adjacents, clone-scan competitors, compare product plus code, and emit per-feature depend/vendor/clean-room/skip verdicts with SPDX attribution. Never copies GPL/AGPL code or UI assets.
4
+ ---
5
+
6
+ # Darkharvest — Competitor Teardown & Clean-Room Harvest
7
+
8
+ Product-level teardown, not library scouting. `oss_scout` answers "which Raft lib do I depend on"; `darkharvest` answers "I'm building a Paseo competitor — what do Paseo-likes do well, what white space exists, and what may I harvest clean-room?"
9
+
10
+ ## 1. Invocation
11
+
12
+ ```bash
13
+ # Full dialectic teardown swarm (mock = zero token cost)
14
+ python3 runner/research_swarm.py --mode darkharvest --objective "Paseo-class agent harness competitor" --mock-claude
15
+
16
+ # Competitor fetch helper (read-only scan, allowlisted, capped)
17
+ python3 skills/darkharvest/scripts/harvest.py --repo https://github.com/owner/repo --show-context
18
+
19
+ # Via CLI
20
+ iumbtems darkharvest "Paseo-class agent harness competitor" --seeds https://github.com/a/b,https://github.com/c/d --max-repos 6 --mock-claude
21
+ ```
22
+
23
+ In OpenCode V2: `iumbtems_darkharvest` tool. Slash: `/darkharvest <objective>`.
24
+ In Pi / OMP: `/darkharvest <objective>`. In Gemini: skill auto-activates on competitor-teardown intent.
25
+
26
+ ## 2. Input contract (hybrid, merged)
27
+
28
+ 1. Seeds: GitHub/GitLab URLs plus free-text prompt guidance. Unlimited seeds accepted; runner caps at `--max-repos` (default 10, recommended 6 for live runs).
29
+ 2. Local baseline: full `brainstorm.py` domain model (tree + README + stack + TODOs + git log/status). Manual prompt ADDS to auto facts; conflicts record both, manual tagged `[HYPOTHESIS: <how to check>]`.
30
+ 3. Gaps: open-loops + user wishlist combined.
31
+
32
+ ## 3. Discovery (seed + expand)
33
+
34
+ - Seeds + 5–8 auto adjacents; direct competitors and adjacent inspirations SPLIT in the report.
35
+ - Similarity: hybrid pre-filter (README topics + feature keywords + dep overlap) then LLM rerank. Never LLM-vibe alone.
36
+ - Rank relevance first, stars second. Any stack allowed with porting-effort note. Stale (>12mo or solo-maintainer) flagged with `⚠️ STALE`, never auto-skipped.
37
+
38
+ ## 4. Fetch & scan budgets (defaults, all flag-overridable)
39
+
40
+ - Defaults: `--max-repos 10 --depth 3 --per-repo-mb 100 --per-repo-timeout 300s`. Prefer `--max-repos 6 --depth 2` for live runs.
41
+ - `harvest.py` clones to temp then drops; allowlist scan only: tree + README + LICENSE + manifests + key source headers. Skips `.git, node_modules, dist, build, target, .next, .venv, .research`. Caps file count and bytes — full dump without caps will OOM and is banned.
42
+ - Closed or non-cloneable targets: try Firecrawl/docs fetch; when unavailable emit metadata-only row + `[NEGATIVE_KNOWLEDGE: <query>]`, never fail the run.
43
+ - Evidence: every matrix cell needs a SHA-256 cached source (`.research/sources/<sha256>.md`) with verbatim quote, or a `file://<path>#L<start>-L<end>` pointer. Unverified cells are purged to NEGATIVE_KNOWLEDGE.
44
+
45
+ ## 5. Dialectic roles (one scope per competitor)
46
+
47
+ - Orchestrator decomposes the candidate list into one scope per competitor (DAG default, auction optional).
48
+ - Alpha (harvest proponent): what competitor does well + per-feature harvest proposals.
49
+ - Beta (red-team): license contamination, transitive bloat, CVE/takeover surface, staleness, both-ways missing (white space).
50
+ - Auditor: enforces strict-cells bar, warn-only gates surface as inline `⚠️ LICENSE/CVE/STALE` badges plus a risks section.
51
+
52
+ ## 6. Legal guardrails (final)
53
+
54
+ - Permissive only (MIT / Apache-2.0 / BSD / ISC) may be `depend` or `vendor`.
55
+ - GPL / AGPL / unknown license → `clean-room-rebuild` spec only, never copy.
56
+ - Workflows clonable; copy-text, UI assets, brand never copied.
57
+ - Every vendored item emits an SPDX attribution block (license + upstream URL + files).
58
+
59
+ ## 7. Output
60
+
61
+ - `.research/darkharvest_report.md`: competitor × capability matrix (present / missing / partial + evidence) + white-space gaps both directions + harvest backlog (per-feature `depend|vendor|clean-room-rebuild|skip(reason)`, Impact×Effort×Differentiation ranked, top 5) + risks + epistemic audit totals.
62
+ - Machine dossier: `.research/darkharvest_dossier.json` for rerun diffs (changed cells + new/removed candidates).
63
+ - Errors: structured log + NEGATIVE_KNOWLEDGE, never silent. Writes only under `.research/`.
64
+
65
+ ## 8. Anti-patterns (hard bans)
66
+
67
+ - No auto-install of dependencies, no writes outside `.research/`.
68
+ - No pixel-level UX cloning, no GPL/AGPL vendoring.
69
+ - No parametric repo claims as `[VERIFIED]` — metadata suffices only for rank hints, never for harvest verdicts.
70
+ - No unbounded expansion: seeds + expansion must respect `--max-repos` and per-repo caps.