@intentsolutionsio/contributing-clanker 0.1.1 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +21 -0
- package/package.json +2 -3
- package/skills/contribute/agents/draft-writer.md +16 -1
- package/skills/contribute/agents/repo-analyzer.md +16 -1
- package/skills/contribute/agents/researcher.md +22 -4
- package/skills/contribute/agents/scout.md +19 -1
- package/skills/contribute/agents/test-runner.md +16 -1
- package/skills/contribute/references/candidate-file-format.md +4 -2
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "contributing-clanker",
|
|
3
|
+
"version": "0.1.2",
|
|
4
|
+
"description": "Local-only OSS contribution command center with 41 deterministic gates against AI-slop failure modes",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Jeremy Longshore",
|
|
7
|
+
"email": "jeremy@intentsolutions.io",
|
|
8
|
+
"url": "https://github.com/jeremylongshore"
|
|
9
|
+
},
|
|
10
|
+
"homepage": "https://github.com/jeremylongshore/contributing-clanker",
|
|
11
|
+
"repository": "https://github.com/jeremylongshore/contributing-clanker",
|
|
12
|
+
"license": "MIT",
|
|
13
|
+
"keywords": [
|
|
14
|
+
"oss",
|
|
15
|
+
"contributions",
|
|
16
|
+
"github",
|
|
17
|
+
"ai-slop-prevention",
|
|
18
|
+
"code-review",
|
|
19
|
+
"open-source"
|
|
20
|
+
]
|
|
21
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@intentsolutionsio/contributing-clanker",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.7",
|
|
4
4
|
"description": "Local-only OSS contribution command center with 41 deterministic gates against AI-slop failure modes",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"oss",
|
|
@@ -9,8 +9,6 @@
|
|
|
9
9
|
"ai-slop-prevention",
|
|
10
10
|
"code-review",
|
|
11
11
|
"open-source",
|
|
12
|
-
"gates",
|
|
13
|
-
"deterministic",
|
|
14
12
|
"claude-code",
|
|
15
13
|
"claude-plugin",
|
|
16
14
|
"tonsofskills"
|
|
@@ -33,6 +31,7 @@
|
|
|
33
31
|
},
|
|
34
32
|
"files": [
|
|
35
33
|
"README.md",
|
|
34
|
+
".claude-plugin",
|
|
36
35
|
"skills",
|
|
37
36
|
"hooks"
|
|
38
37
|
],
|
|
@@ -3,9 +3,24 @@ name: draft-writer
|
|
|
3
3
|
description: Use this agent to draft a Design Issue body (preferred) or PR description from a working branch's diff. Trigger with "draft a design issue for X", "write the PR body for X", or @draft-writer.
|
|
4
4
|
tools: Bash, Read
|
|
5
5
|
model: sonnet
|
|
6
|
+
color: red
|
|
7
|
+
version: 1.0.0
|
|
8
|
+
author: Jeremy Longshore <jeremy@intentsolutions.io>
|
|
9
|
+
tags:
|
|
10
|
+
- community
|
|
11
|
+
- draft
|
|
12
|
+
- writer
|
|
13
|
+
disallowedTools: []
|
|
14
|
+
skills: []
|
|
15
|
+
background: false
|
|
6
16
|
memory: user
|
|
17
|
+
# ── upgrade levers — uncomment + set when tuning this agent ──
|
|
18
|
+
# effort: high # reasoning depth: low/medium/high/xhigh/max (omit = inherit session)
|
|
19
|
+
# maxTurns: 50 # cap the agentic loop (omit = engine default)
|
|
20
|
+
# isolation: worktree # run in an isolated git worktree
|
|
21
|
+
# initialPrompt: "…" # seed the agent's first turn
|
|
22
|
+
# hooks / mcpServers / permissionMode → set at the PLUGIN level, not on a plugin agent
|
|
7
23
|
---
|
|
8
|
-
|
|
9
24
|
# Draft Writer Agent
|
|
10
25
|
|
|
11
26
|
**Purpose**: Draft a Design Issue body (preferred) or PR description for an OSS contribution. Outputs markdown ready for `gh issue create` / `gh pr create --body-file`.
|
|
@@ -3,9 +3,24 @@ name: repo-analyzer
|
|
|
3
3
|
description: Use this agent for one-shot repo eligibility checks (CLA / activity / competing PRs / CONTRIBUTING.md). DEPRECATED — most function moved to @researcher dossiers.
|
|
4
4
|
tools: Bash, Read
|
|
5
5
|
model: sonnet
|
|
6
|
+
color: green
|
|
7
|
+
version: 1.0.0
|
|
8
|
+
author: Jeremy Longshore <jeremy@intentsolutions.io>
|
|
9
|
+
tags:
|
|
10
|
+
- community
|
|
11
|
+
- repo
|
|
12
|
+
- analyzer
|
|
13
|
+
disallowedTools: []
|
|
14
|
+
skills: []
|
|
15
|
+
background: false
|
|
6
16
|
memory: user
|
|
17
|
+
# ── upgrade levers — uncomment + set when tuning this agent ──
|
|
18
|
+
# effort: high # reasoning depth: low/medium/high/xhigh/max (omit = inherit session)
|
|
19
|
+
# maxTurns: 50 # cap the agentic loop (omit = engine default)
|
|
20
|
+
# isolation: worktree # run in an isolated git worktree
|
|
21
|
+
# initialPrompt: "…" # seed the agent's first turn
|
|
22
|
+
# hooks / mcpServers / permissionMode → set at the PLUGIN level, not on a plugin agent
|
|
7
23
|
---
|
|
8
|
-
|
|
9
24
|
# Repo Analyzer Agent
|
|
10
25
|
|
|
11
26
|
**Purpose**: Decide if a target repo / issue is worth claiming. Pulls CONTRIBUTING.md, recent maintainer activity, CLA status, competing PRs.
|
|
@@ -3,9 +3,23 @@ name: researcher
|
|
|
3
3
|
description: Use this agent when building or refreshing per-repo dossiers (CLA/DCO, branch convention, AI policy, review bots, pet peeves). Trigger with "build/refresh dossier for X" or @researcher.
|
|
4
4
|
tools: Bash, Read, Write, Edit, Glob, Grep
|
|
5
5
|
model: sonnet
|
|
6
|
+
color: red
|
|
7
|
+
version: 1.0.0
|
|
8
|
+
author: Jeremy Longshore <jeremy@intentsolutions.io>
|
|
9
|
+
tags:
|
|
10
|
+
- community
|
|
11
|
+
- researcher
|
|
12
|
+
disallowedTools: []
|
|
13
|
+
skills: []
|
|
14
|
+
background: false
|
|
6
15
|
memory: user
|
|
16
|
+
# ── upgrade levers — uncomment + set when tuning this agent ──
|
|
17
|
+
# effort: high # reasoning depth: low/medium/high/xhigh/max (omit = inherit session)
|
|
18
|
+
# maxTurns: 50 # cap the agentic loop (omit = engine default)
|
|
19
|
+
# isolation: worktree # run in an isolated git worktree
|
|
20
|
+
# initialPrompt: "…" # seed the agent's first turn
|
|
21
|
+
# hooks / mcpServers / permissionMode → set at the PLUGIN level, not on a plugin agent
|
|
7
22
|
---
|
|
8
|
-
|
|
9
23
|
# Researcher
|
|
10
24
|
|
|
11
25
|
You are the dossier builder for the contributing-clanker system. Your job is to
|
|
@@ -83,6 +97,7 @@ After write:
|
|
|
83
97
|
`last_refreshed:`, `default_branch:`).
|
|
84
98
|
- Note the path to the user.
|
|
85
99
|
- Append a build event to `~/.contribute-system/log.jsonl`:
|
|
100
|
+
|
|
86
101
|
```bash
|
|
87
102
|
jq -nc --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" --arg repo "$REPO" --arg dossier "$DOSSIER" \
|
|
88
103
|
'{ts: $ts, event: "researcher_build", details: {repo: $repo, dossier: $dossier}}' \
|
|
@@ -94,11 +109,12 @@ After write:
|
|
|
94
109
|
Refresh replaces auto-generated content but preserves the manual sections.
|
|
95
110
|
|
|
96
111
|
1. **Snapshot manual sections** from the existing dossier:
|
|
97
|
-
- `## Pet peeves & known triggers` (everything until the next
|
|
98
|
-
- `## Failure log` (everything until next
|
|
99
|
-
- `## Notes` (everything until next
|
|
112
|
+
- `## Pet peeves & known triggers` (everything until the next `##` header)
|
|
113
|
+
- `## Failure log` (everything until next `##`)
|
|
114
|
+
- `## Notes` (everything until next `##` or EOF)
|
|
100
115
|
|
|
101
116
|
2. **Run the builder** to a tempfile:
|
|
117
|
+
|
|
102
118
|
```bash
|
|
103
119
|
TMP="${DOSSIER}.tmp.$$"
|
|
104
120
|
~/.contribute-system/bin/researcher-build.sh <owner>/<repo> > "$TMP"
|
|
@@ -109,11 +125,13 @@ Refresh replaces auto-generated content but preserves the manual sections.
|
|
|
109
125
|
placeholders with the snapshotted content.
|
|
110
126
|
|
|
111
127
|
4. **Atomic rename** to commit the refresh:
|
|
128
|
+
|
|
112
129
|
```bash
|
|
113
130
|
mv "$TMP" "$DOSSIER"
|
|
114
131
|
```
|
|
115
132
|
|
|
116
133
|
5. **Log the refresh**:
|
|
134
|
+
|
|
117
135
|
```bash
|
|
118
136
|
jq -nc --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" --arg repo "$REPO" --arg dossier "$DOSSIER" \
|
|
119
137
|
'{ts: $ts, event: "researcher_refresh", details: {repo: $repo, dossier: $dossier}}' \
|
|
@@ -3,9 +3,23 @@ name: scout
|
|
|
3
3
|
description: Use this agent when discovering OSS contribution candidates ranked by star-tier brackets. Three modes — baseline, refresh, ad-hoc. Trigger with "scout for X", "find me a repo", or @scout.
|
|
4
4
|
tools: Bash, Read, Write, Edit, Glob, Grep
|
|
5
5
|
model: sonnet
|
|
6
|
+
color: pink
|
|
7
|
+
version: 1.0.0
|
|
8
|
+
author: Jeremy Longshore <jeremy@intentsolutions.io>
|
|
9
|
+
tags:
|
|
10
|
+
- community
|
|
11
|
+
- scout
|
|
12
|
+
disallowedTools: []
|
|
13
|
+
skills: []
|
|
14
|
+
background: false
|
|
6
15
|
memory: user
|
|
16
|
+
# ── upgrade levers — uncomment + set when tuning this agent ──
|
|
17
|
+
# effort: high # reasoning depth: low/medium/high/xhigh/max (omit = inherit session)
|
|
18
|
+
# maxTurns: 50 # cap the agentic loop (omit = engine default)
|
|
19
|
+
# isolation: worktree # run in an isolated git worktree
|
|
20
|
+
# initialPrompt: "…" # seed the agent's first turn
|
|
21
|
+
# hooks / mcpServers / permissionMode → set at the PLUGIN level, not on a plugin agent
|
|
7
22
|
---
|
|
8
|
-
|
|
9
23
|
# Scout
|
|
10
24
|
|
|
11
25
|
You are an OSS contribution scout. Your job is to find legitimate OSS
|
|
@@ -48,6 +62,7 @@ a different tier in ad-hoc mode).
|
|
|
48
62
|
|
|
49
63
|
Read `~/.claude/agent-memory/scout/MEMORY.md` if it exists. It contains
|
|
50
64
|
patterns you've learned over time:
|
|
65
|
+
|
|
51
66
|
- Orgs that reject AI-flagged PRs (lower their score)
|
|
52
67
|
- Tiers that historically don't convert to merges for this user
|
|
53
68
|
- CLA-required repos to avoid for first-pass
|
|
@@ -91,6 +106,7 @@ Common causes: gh not authenticated, rate limit, invalid tier name.
|
|
|
91
106
|
```
|
|
92
107
|
|
|
93
108
|
The scorer reads profile.md itself and applies weights:
|
|
109
|
+
|
|
94
110
|
- `star_tier` ∈ `target_star_tiers` (×0.30)
|
|
95
111
|
- `competing_prs == 0` (×0.25)
|
|
96
112
|
- repo updated within last 30d (×0.20)
|
|
@@ -122,6 +138,7 @@ For **Ad-hoc mode**: do NOT write to candidates/ unless the user says
|
|
|
122
138
|
Walks every candidate file, re-fetches metadata via gh, updates
|
|
123
139
|
frontmatter (star_count, competing_prs, last_refreshed, momentum,
|
|
124
140
|
growth_velocity_pct), drops candidates where:
|
|
141
|
+
|
|
125
142
|
- repo archived
|
|
126
143
|
- maintainer silent >60d
|
|
127
144
|
- issue closed
|
|
@@ -135,6 +152,7 @@ The scripts append events to `~/.contribute-system/log.jsonl`
|
|
|
135
152
|
automatically. You don't need to do this manually.
|
|
136
153
|
|
|
137
154
|
Return ONLY this to the parent conversation:
|
|
155
|
+
|
|
138
156
|
- Mode you ran
|
|
139
157
|
- Counts: candidates by tier (baseline) / refreshed+dropped (refresh) /
|
|
140
158
|
top 5 picks (ad-hoc)
|
|
@@ -3,9 +3,24 @@ name: test-runner
|
|
|
3
3
|
description: Use this agent to run an upstream repo's native test suite (pnpm/yarn/npm/pytest/cargo/sbt/composer/bundle), log to ~/.contribute-system/test-logs/. Trigger with "run tests for X" or @test-runner.
|
|
4
4
|
tools: Bash, Read
|
|
5
5
|
model: sonnet
|
|
6
|
+
color: green
|
|
7
|
+
version: 1.0.0
|
|
8
|
+
author: Jeremy Longshore <jeremy@intentsolutions.io>
|
|
9
|
+
tags:
|
|
10
|
+
- community
|
|
11
|
+
- test
|
|
12
|
+
- runner
|
|
13
|
+
disallowedTools: []
|
|
14
|
+
skills: []
|
|
15
|
+
background: false
|
|
6
16
|
memory: user
|
|
17
|
+
# ── upgrade levers — uncomment + set when tuning this agent ──
|
|
18
|
+
# effort: high # reasoning depth: low/medium/high/xhigh/max (omit = inherit session)
|
|
19
|
+
# maxTurns: 50 # cap the agentic loop (omit = engine default)
|
|
20
|
+
# isolation: worktree # run in an isolated git worktree
|
|
21
|
+
# initialPrompt: "…" # seed the agent's first turn
|
|
22
|
+
# hooks / mcpServers / permissionMode → set at the PLUGIN level, not on a plugin agent
|
|
7
23
|
---
|
|
8
|
-
|
|
9
24
|
# Test Runner Agent
|
|
10
25
|
|
|
11
26
|
**Purpose**: Run the upstream repo's test suite using its native conventions, capture results, save to `~/.contribute-system/test-logs/`.
|
|
@@ -124,7 +124,7 @@ status: submitted
|
|
|
124
124
|
pr_number: 137
|
|
125
125
|
pr_url: https://github.com/example-org/example-repo/pull/137
|
|
126
126
|
branch: fix/42-null-deref
|
|
127
|
-
research_path:
|
|
127
|
+
research_path:
|
|
128
128
|
last_refreshed: 2026-04-20T14:30:00Z
|
|
129
129
|
---
|
|
130
130
|
|
|
@@ -177,9 +177,11 @@ Closes #42.
|
|
|
177
177
|
## Test results
|
|
178
178
|
|
|
179
179
|
```
|
|
180
|
-
|
|
180
|
+
|
|
181
|
+
PASS src/**tests**/format.test.ts (2 added)
|
|
181
182
|
Tests: 78 passed, 78 total
|
|
182
183
|
Duration: 1.2s
|
|
184
|
+
|
|
183
185
|
```
|
|
184
186
|
```
|
|
185
187
|
|