skills/memory/SKILL.md
# Skill: memory Persist, retrieve, and evolve harness knowledge across sessions and epics. ## Purpose 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. ## Memory Storage Layout ``` .harness/memory/ ├── project-patterns.json # Patterns learned from this project ├── codemaps/ # Hotspot module notes (reuse across epics); templates/co
npx skillsauth add LUAgam/stage-harness skills/memoryInstall 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.
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-init <repo_id> <module_slug> --source-path <path> [--source-path ...] scaffolds a standard CodeMap file from the template with consistent frontmatter.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).harnessctl memory codemap-audit [path] [--write] [--epic-id <id>] [--json] batch-audits one CodeMap file or a whole codemap directory tree; summary includes fresh / stale / missing_verified_commit / invalid.At /stage-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>
development
在 generate-test-cases 阶段之后执行,逐个验证测试用例并在失败时修复项目代码、重新编译部署、再次验证, 直到通过或达到最大修复次数。覆盖 UI / API / API+UI / 性能测试四个维度,UI 测试通过浏览器真实模拟用户操作并截图, API 测试根据项目代码生成可执行的接口脚本,性能测试调用现有性能/质量技能全量执行。 涉及真实用户登录信息(如手机号+验证码、账号密码、JWT)时必须中断要求用户提供,禁止编造无效凭证。 所有 case 状态变更必须通过 e2e-case-tracker.sh 脚本持久化,确保中途崩溃可恢复、无 case 遗漏。
development
# SKILL: e2e > **核心原则**: > 1. 测试范围跟着本次变动走。后端接口改了,对应的前端流程必须做联调验证;与本次需求无关的功能不测。对于涉及算法、转换准确率等质量敏感型需求,需额外生成专项质量测试。 > 2. **覆盖完整性优先于执行便利性**。不得以"链路复杂"、"需要外部依赖"为由跳过本次变动相关的用例;凡是受变动影响的接口和 UI 流程,都必须生成真实调用/操作用例。 > 3. **UI 测试必须模拟真实用户操作**(定位元素、点击、键入、等待渲染、断言可见文本/状态)。**禁止**将 UI 套件退化为浏览器上下文里的 `page.evaluate(fetch(...))` API 验证——那只是把 API 测试换了执行环境,没有额外价值,不算 UI 测试。 > 4. **通用性**:本 skill 不假设具体业务域,所有规则均以抽象变动面(文件、接口、页面、用户动作)为单位组织,不针对任何特定项目的数据库/领域词汇。 > 5. **E2E 套件必须验证运行时行为**。严禁把"读取源码/配置文件并做字符串/结构匹配"的检查封装成独立 E2E 套件——这类检
tools
# SKILL: deploy ## CLI Bootstrap 在执行任何 `harnessctl` 命令前,先解析本地 CLI 路径: ```bash if [ -z "${HARNESSCTL:-}" ]; then candidates=( "./stage-harness/scripts/harnessctl" "../stage-harness/scripts/harnessctl" "$(git rev-parse --show-toplevel 2>/dev/null)/stage-harness/scripts/harnessctl" ) for candidate in "${candidates[@]}"; do if [ -n "$candidate" ] && [ -x "$candidate" ]; then HARNESSCTL="$candidate" break fi done fi test -n "${HARNESSCTL:-}" && test -x "$H
tools
# SKILL: build ## CLI Bootstrap 在执行任何 `harnessctl` 命令前,先解析本地 CLI 路径: ```bash if [ -z "${HARNESSCTL:-}" ]; then candidates=( "./stage-harness/scripts/harnessctl" "../stage-harness/scripts/harnessctl" "$(git rev-parse --show-toplevel 2>/dev/null)/stage-harness/scripts/harnessctl" ) for candidate in "${candidates[@]}"; do if [ -n "$candidate" ] && [ -x "$candidate" ]; then HARNESSCTL="$candidate" break fi done fi test -n "${HARNESSCTL:-}" && test -x "$HA