ai/claude/skills/promote/SKILL.md
Reviews accumulated Claude Code memories for promotion into durable workbench artifacts — lint rules, scripts, coding rules, hooks. Prioritizes mechanical enforcement over prose.
npx skillsauth add otto-nation/otto-workbench promoteInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Reviews accumulated Claude Code memories across all projects and evaluates whether each one should be promoted into a durable workbench artifact. Prioritizes lint rules and scripts (mechanical enforcement) over prose rules.
Run manually with /promote. Auto-triggers every 7 days via the Stop hook managed
by otto-workbench sync.
Promote runs 4 sequential phases. Execute them in order. Do not skip phases.
ORIENT --> EVALUATE --> PROPOSE --> RECORD
Goal: Understand all accumulated memories and the current workbench state.
ls -d ~/.claude/projects/*/memory/ 2>/dev/null
Read MEMORY.md in each project, then read every topic file it references.
Also read the backed-up memories if they exist:
ls ~/git/personal/otto-nation/otto-workbench/ai/memory/ 2>/dev/null
Understand what already exists so you never propose duplicates:
ls ~/git/personal/otto-nation/otto-workbench/ai/guidelines/rules/*.md
ls ~/git/personal/otto-nation/otto-workbench/bin/
cat ~/git/personal/otto-nation/otto-workbench/ai/claude/settings.json
ls ~/git/personal/otto-nation/otto-workbench/ai/claude/agents/
A mental map of: all memories across projects, their themes, and the current workbench artifact inventory. Note any memories that look like they're describing the same pattern across different projects.
Goal: Classify each memory into a promotion category or skip it.
For each memory entry, evaluate it against this priority ladder (first match wins):
Can this be enforced by a linter, formatter, or static analysis tool?
Signs it belongs here:
Target: shellcheck directive, golangci-lint config, pre-commit hook, or a note to configure an existing tool.
Can this be automated as a bin script, task, or hook?
Signs it belongs here:
Target: New script in bin/, new task, or new hook in settings.json.
Should this be a rule in ai/guidelines/rules/?
Signs it belongs here:
Target: New rule file or addition to existing rule file in ai/guidelines/rules/.
Use path-scoped frontmatter when the rule only applies to specific file types.
Should an existing agent or skill be modified?
Signs it belongs here:
Target: Edit to an existing agent .md or skill SKILL.md.
The memory is valuable context but doesn't generalize into an artifact.
Signs it belongs here:
Action: Leave in memory. No promotion needed.
The memory is stale, redundant, or already covered by an existing artifact.
Signs it belongs here:
Action: Flag for deletion (dream will clean it up on next run).
feedback or corrections type are highest-value signalsGoal: Write a promotion report with concrete, actionable proposals.
Write the report to ~/git/personal/otto-nation/otto-workbench/ai/memory/PROMOTE.md.
# Memory Promotion Report
<!-- generated: YYYY-MM-DD -->
<!-- memories evaluated: N -->
<!-- promotions proposed: N -->
## Proposed Promotions
### P1: Lint Rules & Static Checks
#### <Title>
- **Source:** <project> / <memory file> / <entry>
- **Proposal:** <what to add/configure>
- **Target:** <specific file or tool config>
- **Rationale:** <why mechanical enforcement is better than prose>
### P2: Scripts & Automation
#### <Title>
- **Source:** <project> / <memory file> / <entry>
- **Proposal:** <what to automate>
- **Target:** `bin/<script-name>` or task or hook
- **Rationale:** <why automation beats manual repetition>
### P3: Coding Rules
#### <Title>
- **Source:** <project> / <memory file> / <entry>
- **Proposal:** <rule text>
- **Target:** `ai/guidelines/rules/<file>.md` (new or existing)
- **Rationale:** <why Claude needs this rule>
### P4: Agent/Skill Updates
#### <Title>
- **Source:** <project> / <memory file> / <entry>
- **Proposal:** <what to change>
- **Target:** `ai/claude/agents/<file>.md` or `ai/claude/skills/<dir>/`
- **Rationale:** <what's missing or wrong in current protocol>
## Skipped
| Memory | Project | Reason |
|--------|---------|--------|
| <entry> | <project> | Keep as memory / Already covered / Stale |
## Conflicts
List any proposed promotions that conflict with existing artifacts.
Before writing the report:
Goal: Record the promote timestamp and clean up.
# Record timestamp in every project that has a memory directory
for mem_dir in ~/.claude/projects/*/memory/; do
[ -d "$mem_dir" ] && date +%s > "${mem_dir}.last-promote"
done
# Remove the pending flag
rm -f ~/.claude/.promote-pending
Print a one-line summary:
Promote complete: N memories evaluated, N promotions proposed (P1: N, P2: N, P3: N, P4: N), N skipped, N conflicts.
Report: ~/git/personal/otto-nation/otto-workbench/ai/memory/PROMOTE.md
testing
Address incoming PR review comments: fetch, verify, fix, and reply. Works with human and bot reviewers.
tools
Manage GitHub PR review lifecycle: analyze unanswered threads, update review files, and post replies. Initial posting is handled by the review-post script.
tools
Refresh the machine profile (~/.claude/machine/machine.md) — hardware, OS, runtimes, Docker, Git identity, and project registry. Run after upgrading tools or to force a refresh.
development
Memory consolidation for Claude Code. Scans session transcripts for corrections, decisions, preferences, and patterns, then merges findings into persistent memory files. Inspired by how sleep consolidates human memory.