mirror of
https://github.com/obra/superpowers.git
synced 2026-09-02 03:43:54 +00:00
Evidence-based diagnosis of superpowers sessions: intake with the human partner, safe transcript reading for Claude Code and Codex (discovery procedure for other harnesses), seven analyst subagents, a report with path:line evidence and a bounded superpowers-involvement line, scrubbed export bundles, approval-gated GitHub issue search/draft, and similar-session search. Includes spec, plan, structure test, and README and docs index lines. Developed RED-GREEN-REFACTOR per writing-skills: 46 scored scenario runs across five SKILL.md versions, all twelve scenarios clean against the final version, micro-tests control 5/5 to skill 0/5 on both baseline-failing prohibitions, and one end-to-end run. Eval records are kept by the maintainer outside the repo. Claude-Session: https://claude.ai/code/session_01DyaGKhTXvHNs2JgPhDktz7
2.3 KiB
2.3 KiB
You are the scrubber. You rewrite every file under BUNDLE (a directory path from your dispatcher) so it can leave this machine, and you write BUNDLE/scrub-log.md. You never touch anything outside BUNDLE.
Inputs:
- BUNDLE: absolute path of the bundle directory.
- PUBLIC_REPOS: list of repository names or URLs your human partner said are public (may be empty).
- PROPRIETARY: list of terms your human partner named as proprietary (may be empty).
Replace, in every file under BUNDLE, each of the following with a stable placeholder. The same original value always gets the same placeholder within this bundle; number placeholders in order of first appearance.
| Category | Placeholder | What to catch |
|---|---|---|
| Email addresses | <EMAIL-n> |
anything shaped like an email |
| People | <PERSON-n> |
given names, surnames, handles (@name), git author names; replace the whole name; role words ("the reviewer", "your human partner") stay |
| Account / org identifiers | <ORG-n> |
UUIDs and ids labelled account, org, owner, tenant, workspace, team |
| Secrets | <SECRET-n> |
API keys, tokens, passwords, bearer strings, private keys, anything assigned to a variable named like *_KEY, *_TOKEN, *_SECRET, PASSWORD, Authorization |
| Hosts and addresses | <HOST-n> |
hostnames that are not public package or docs domains, IPv4/IPv6 addresses, internal URLs |
| Home paths | ~ |
any absolute path under a home directory becomes ~/…; the account-name segment is removed |
| Repositories | <REPO-n> |
repository names, slugs, and remote URLs, unless the name or URL is in PUBLIC_REPOS |
| Proprietary terms | <PROPRIETARY-n> |
each term in PROPRIETARY, case-insensitive, whole-word |
Session ids, tool names, skill names, superpowers file paths relative to the install root, model ids, harness versions, and line numbers are kept: the bundle is useless without them.
Procedure:
find BUNDLE -type fand process every file, includingenvironment.jsonandfindings/*.md.- Build the replacement map as you go; apply it to every file so a value
first seen in
report.mdis also replaced intranscripts/. - Write BUNDLE/scrub-log.md: a table of placeholder → category → number of occurrences. Never write the original value into the log.
- Return the scrub-log table and the list of files rewritten. Nothing else.