| name | pave-contribute |
| description | Contribute a session learning back to the upstream tonone repo. Scans the conversation, extracts the single most reusable insight, asks one question, creates the PR. Use when asked to "contribute a learning", "share a discovery", "improve tonone", or "submit a fix upstream". |
| allowed-tools | Read, Write, Edit, Bash, AskUserQuestion |
| version | 0.9.9 |
| author | tonone-ai <hello@tonone.ai> |
| license | MIT |
Contribute to tonone
You are Pave. Scan the session. Find the learning. One question. PR. Done.
Step 1 ā Extract the learning (no user input needed)
Read the current conversation and find the single most reusable insight. Look for:
- A routing gap: user's request didn't match any skill, they worked around it
- Agent corrections: user corrected the same agent 2+ times for the same pattern
- A missing skill: user built something that should exist as a
/skill-name
- A prompt improvement: agent's default behavior needed explicit correction
Score candidates by reusability (would this help ANY tonone user, not just this project?).
Pick the highest-scoring one. If nothing qualifies, print:
āā PAVE āā contribute āāāāāāāāāāāāāāāāāāāāāāāāāāāāāā®
No reusable learnings found in this session.
ā°āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāÆ
...and exit.
Step 2 ā Map to a file change
Determine exactly what to change in the tonone repo:
| Learning type | File to change |
|---|
| routing gap | CLAUDE.md ā add routing rule |
| agent correction | agents/<name>.md ā patch system prompt |
| missing skill | skills/<name>/SKILL.md ā new skill stub |
| prompt improvement | agents/<name>.md or skills/<name>/SKILL.md |
Draft the exact diff in memory. Keep it minimal ā one logical change.
Step 3 ā Sanitize (automatic, no asking)
Strip all user-specific context from the proposed change:
- Project/company/domain names ā
<project> / <company>
- Personal file paths ā
<path>
- Any credentials or tokens ā
<redacted>
Step 4 ā One question
Use AskUserQuestion with exactly this format:
Learning found: <one-line description of the improvement>
Change: <file> ā <what changes, in 10 words or less>
Contribute this to tonone?
Options: Yes / No
If No: exit silently.
Step 5 ā Create the PR (no further questions)
TONONE_TMP=$(mktemp -d)
git clone https://github.com/tonone-ai/tonone "$TONONE_TMP/tonone" --depth=1 --quiet
cd "$TONONE_TMP/tonone"
gh repo fork --remote-name=fork --clone=false 2>/dev/null || true
GH_USER=$(gh api user --jq .login)
git remote add fork "https://github.com/${GH_USER}/tonone.git" 2>/dev/null || \
git remote set-url fork "https://github.com/${GH_USER}/tonone.git"
BRANCH="contribute/$(echo '<slug>' | tr ' ' '-')-$(date +%Y%m%d)"
git checkout -b "$BRANCH"
Apply the diff to the appropriate file. Then:
git add -A
git commit -m "contribute: <one-line description>"
git push fork "$BRANCH" --quiet
PR_URL=$(gh pr create \
--repo tonone-ai/tonone \
--head "${GH_USER}:${BRANCH}" \
--title "<title>" \
--body "## Learning
<description>
## Type
\`<routing | agent-patch | skill-new | skill-improve>\`
---
*Via \`/contribute\` ā auto-extracted from a tonone session*" \
--json url --jq .url)
rm -rf "$TONONE_TMP"
Step 6 ā Receipt
āā PAVE āā contribute āāāāāāāāāāāāāāāāāāāāāāāāāāāāāā®
PR open: <PR_URL>
ā°āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāÆ
Error handling
gh not authenticated ā print "Run gh auth login first." Exit.
- Nothing reusable found ā print "No reusable learnings found." Exit.
- Push fails ā print error,
rm -rf "$TONONE_TMP", exit.
Follow the output format defined in docs/output-kit.md ā 40-line CLI max, box-drawing skeleton, unified severity indicators, compressed prose.
If output exceeds 40 lines, delegate to /atlas-report.