Persist, retrieve, and evolve harness knowledge across sessions and epics.
From stage-harnessnpx claudepluginhub luagam/stage-harnessThis skill uses the workspace's default tool permissions.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Details PluginEval's skill quality evaluation: 3 layers (static, LLM judge), 10 dimensions, rubrics, formulas, anti-patterns, badges. Use to interpret scores, improve triggering, calibrate thresholds.
Persist, retrieve, and evolve harness knowledge across sessions and epics.
The memory system enables stage-harness to improve over time: patterns from completed epics are preserved, common mistakes are avoided, and successful approaches are promoted to reusable skills.
.harness/memory/
├── project-patterns.json # Patterns learned from this project
├── codemaps/ # Hotspot module notes (reuse across epics); templates/codemap-module.md
│ └── <repo_id>/
│ └── <module_slug>.md
├── epic-outcomes/ # Per-epic summary after DONE
│ └── <epic-id>.json
├── candidate-skills/ # Skills awaiting promotion
│ └── <slug>/
│ ├── candidate-skill.md
│ └── observations.jsonl
└── handoffs/ # Session continuity files
└── <epic-id>-handoff.md
codemaps/<repo_id>/<module_slug>.md (see template). Not a source of truth — re-read source if confidence is low or verified_commit is stale.harnessctl memory codemap-probe <path-to-codemap.md> [--write] [--json] compares source_paths between verified_commit and HEAD (project-root git); stale → exit 1; --write updates frontmatter (codemap_probe_at, codemap_stale, may downgrade confidence).At /harness:done completion, write a structured outcome:
{
"epic": "add-user-auth",
"completed_at": "2024-01-20T15:00:00Z",
"risk_level": "medium",
"profile_type": "backend-service",
"stats": {
"tasks_total": 7,
"tasks_completed": 7,
"interrupts_consumed": 1,
"auto_assumptions": 3,
"iterations_to_verify": 1
},
"what_worked": ["JWT strategy", "parallel scouts fast", "challenger caught auth bypass"],
"what_didnt": ["test setup took 2 retries"],
"skills_mined": ["jwt-auth-pattern"],
"notes": "Standard RBAC pattern — reusable for future auth epics"
}
When SessionStart hook fires and .harness/ exists:
1. Read .harness/memory/project-patterns.json
2. List active epics (state != DONE)
3. For each active epic, read handoff.md
4. Surface summary to user:
"Resuming: add-user-auth (EXECUTE, task 3/7)"
After each completed epic, skill-miner agent scans:
Patterns with ≥ 2 occurrences become candidate-skills.
project-patterns.json accumulates project-level knowledge:
{
"project": "my-api",
"last_updated": "2024-01-20",
"patterns": [
{
"id": "P001",
"title": "JWT auth follows express-jwt pattern",
"source": "epic add-user-auth",
"confidence": "high",
"applies_to": ["auth", "middleware"]
}
],
"avoid": [
{
"id": "A001",
"title": "Don't use bcrypt sync in request handlers",
"reason": "Blocks event loop — use bcrypt.hash() instead",
"source": "epic add-user-auth, VERIFY failure"
}
]
}
At the start of CLARIFY for a new epic:
1. Read project-patterns.json
2. Find patterns matching the epic's domain
3. Inject relevant patterns into clarification-notes.md under "## Known Patterns"
4. Give workers a "head start" by referencing successful past approaches
.harness/ is project-local (in .gitignore by default)Invoke skill: memory
Operation: save_outcome | load_context | extract_patterns
Epic: <epic-name>