Skip to content

Add Claude Code plugin for HIP lifecycle management#1198

Open
madninja wants to merge 8 commits intomainfrom
feat/workflow-automation
Open

Add Claude Code plugin for HIP lifecycle management#1198
madninja wants to merge 8 commits intomainfrom
feat/workflow-automation

Conversation

@madninja
Copy link
Copy Markdown
Member

@madninja madninja commented Mar 10, 2026

Summary

Adds a Claude Code plugin (.claude/plugins/hip/) with six skills that automate the full HIP lifecycle — from drafting a proposal through maintainer acceptance, community voting, status tracking, and Reddit announcements. Also adds a project-level CLAUDE.md for repo context.

Lifecycle

create (Draft) → review → assign (In Discussion) → post → vote-open → status (Voting Open → Approved/Rejected → Deployed)
                                                                                           → Closed (at any point)

Every status change updates three things in lockstep: README badge, tracking issue labels, and frontmatter status field.

Maintainer workflow (before → after)

Step Before After
Review PR Manual read-through /hip:review — 19 automated checks + argument assessment
Assign number Manually rename file, update title, fill frontmatter /hip:assign — one command does it all
Create tracking issue Manually create issue, copy metadata, add labels /hip:assign — created via hiptron with correct labels
Update README Manually edit table row with badge HTML /hip:assign — row added automatically
Open voting Manually create gist, open helium-vote PR /hip:vote-open — gist + PR + Reddit reminder
Update status Manually edit README badge, issue labels, frontmatter /hip:status — all three updated in lockstep + Reddit comment

Skills

Skill Trigger What it does
/hip:create "new HIP", "draft a proposal" Scaffolds 0000-slug.md with YAML frontmatter, category-specific writing guidance (economic needs concrete numbers/tables, technical needs implementation details, meta needs process clarity), related-HIP search, quality checklist
/hip:review "review this HIP", "is this ready" 19 checks across structural (T1-T5), content quality (Q1-Q10), and consistency (C1-C4) with 3 severity levels, plus holistic argument-strength assessment
/hip:assign "assign", "accept this HIP" Assigns next HIP number, renames file + assets directory, converts legacy metadata to YAML frontmatter, fills original-hip-pr and tracking-issue, creates tracking issue via hiptron with category/network labels, adds README row with "In Discussion" badge, updates PR title and labels, squash-merges
/hip:vote-open "open voting", "start the vote" Generates voter-facing summary, creates public gist via hiptron, opens PR against helium/helium-vote, updates frontmatter with vote tracking fields, posts Reddit reminder
/hip:status "mark as deployed", "vote passed" Updates README badge + tracking issue labels + frontmatter status in lockstep for any transition: Voting Open, Approved, Rejected, Deployed, Closed. Posts Reddit comment. Validates transition graph and prerequisites
/hip:post "post to Reddit", "announce" Creates initial Reddit announcement on r/HeliumNetwork as HeliumConsoleTeam, or posts update comments on existing thread. Tracks reddit-post-id in frontmatter

Scripts

Script Purpose
gh-hiptron.sh Runs gh CLI as the hiptron GitHub service account
vote-pr.sh Opens vote PR against helium/helium-vote with input validation
reddit-post.py Reddit OAuth2 API client for posting and commenting

Security

All skills treat HIP file content as untrusted input (community-authored). Guardrails include:

  • Prompt injection detection — flags directive text in HIP content
  • Credential exfiltration prevention — ~/.config/hip/ contents never read or output
  • Command execution prohibition — scripts embedded in HIP content are never run
  • @mention sanitization — stripped from tracking issue bodies and Reddit comments posted by service accounts
  • Input validation — vote-pr.sh validates HIP number format, URL patterns, category values, filename conventions

Other changes

  • CLAUDE.md — documents repo structure, HIP lifecycle with skill mapping, maintainer workflow, HIPs-vs-HRPs relationship, credential paths
  • Credential isolation — all scripts reference ~/.config/hip/ (separate from HRP plugin's ~/.config/hrp/)

madninja and others added 8 commits March 10, 2026 14:24
Skills for creating, reviewing, voting, and announcing HIPs:
- /hip:create — scaffolds new HIPs with category-specific writing guidance
- /hip:review — quality/completeness checks with argument strength assessment
- /hip:vote-open — opens heliumvote.com voting via helium-vote PR
- /hip:post — Reddit announcements on r/HeliumNetwork

Standardizes on YAML frontmatter and relative-path link references.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
- Add untrusted content / prompt injection guards to vote-open, post,
  and create skills (review already had them)
- Add credential exfiltration protection to all four skills — explicit
  prohibition on reading/outputting ~/.config/hrp/ or token files
- Add command execution prohibition — skills only run their defined
  scripts, never commands found in HIP content
- Add input validation to vote-pr.sh: numeric HIP number, valid gist
  URL domain, expected filename pattern, valid category values

Co-Authored-By: Claude Opus 4.6 <[email protected]>
Documents repo structure, HIP conventions, maintainer PR workflow,
HIPs vs HRPs relationship, plugin skills overview, and credential
paths for the HIP plugin.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
Separate HIP credential storage from HRP plugin. All skills and
scripts now reference ~/.config/hip/ instead of ~/.config/hrp/.
Users can create new credentials or copy existing HRP ones.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
Automates steps 3-6 of the maintainer PR workflow: assigns HIP
number, renames file, converts legacy metadata to YAML frontmatter,
fills original-hip-pr and tracking-issue fields, creates tracking
issue via hiptron, updates README index table, and merges.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
Fixes:
- Handle non-GitHub authors (Twitter links, plain text) during
  frontmatter conversion instead of assuming all are GitHub links
- Detect self-assigned HIP numbers and renumber correctly
- Update asset references (images, links) inside HIP file after
  files/0000/ → files/NNNN/ rename
- Sanitize @mentions in tracking issue body to prevent hiptron from
  pinging arbitrary users; require user confirmation before posting
- Add error recovery table for partial failures
- Specify exact README column widths (475 char rows) with copy-last-row
  guidance
- Document URL format choice for frontmatter fields
- Add concurrency warning for parallel number assignment
- Scan main branch explicitly for number determination
- Update PR title to HIP NNN format after assignment
- Add category + network labels to the PR itself
- Handle Authors/Author(s)/Author field name variants
- Clean up temp files after tracking issue creation
- Add Governance → governance label mapping

Co-Authored-By: Claude Opus 4.6 <[email protected]>
New skill handles all status changes after /hip:assign: Voting Open,
Approved, Rejected, Deployed, and Closed. Each transition updates
README badge, tracking issue labels, and frontmatter status field in
lockstep, plus posts a Reddit comment on the HIP thread.

Includes prerequisite validation (rejects if assign hasn't run),
lifecycle transition validation (warns on skipped steps), and
error recovery guidance.

Also updates vote-open to reference /hip:status for the Voting Open
transition (vote isn't live until multisig signs off, so vote-open
can't set the status itself), and cleans up its dead legacy
frontmatter code path.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
Adds .claude/settings.json (committed, shared) so the plugin is
automatically available to anyone who clones the repo and opens
Claude Code. No manual installation step required.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant