一键导入
self-extension-workflow
Apply when executing the self-extension workflow. Six steps from a mistake to a merged rule, with CI gates and CODEOWNERS approval.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Apply when executing the self-extension workflow. Six steps from a mistake to a merged rule, with CI gates and CODEOWNERS approval.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | self-extension-workflow |
| description | Apply when executing the self-extension workflow. Six steps from a mistake to a merged rule, with CI gates and CODEOWNERS approval. |
| license | MIT |
| version | 1.0.0 |
| tokens_target | 2000 |
| triggers | ["executing self-extension"] |
| loads_after | ["error-log"] |
| supersedes | [] |
Exact prompt and procedure the agent executes after every mistake. The agent never pushes to main directly. Every self-extension is a PR.
Five agent steps plus a search-prerequisite, from mistake to merged rule. The agent never pushes to main. Every rule that lands is CODEOWNERS-approved. This page is the contract.
Five conditions. Any one of them starts the workflow.
The agent starts this workflow when any of these is met:
Five steps after the search-prerequisite. Every step is mandatory before the next one.
Mandatory. Duplicates in the error log destroy the signal.
Before creating a new error entry, search the existing error log:
1. Read skills/error-log/SKILL.md.
2. Search for similar errors (same category + similar context).
3. If a similar entry exists:
- Increment its `count` field by 1.
- Update `last_seen` to today.
- Supplement the context if needed.
- Do NOT create a new entry.
4. Only if no similar entry exists, continue with Step 1.
The agent answers six questions before writing anything.
1. What exactly did I do? (concrete code/action)
2. What should I have done instead?
3. Why did I do it wrong? (false assumption, missing knowledge, carelessness)
4. Which category applies?
- development: code error, wrong implementation
- git: commit/branch mistake
- deployment: deployment order, configuration
- security: security vulnerability
- performance: N+1, missing indexes, oversized datasets
- domain: wrong understanding of business rules
5. How severe was the error? (critical/high/medium/low)
6. Which target file does the rule belong in?
Take the next number after the latest entry.
# Find last entry in error-log.md
grep "id: ERR-" skills/error-log/SKILL.md | tail -1
# Take next number: ERR-2026-004 -> ERR-2026-005
Action directive only. The CI verb allow-list rejects anything else.
Use the template at skills/error-log/_entry-template.md. The schema at schemas/error-entry.json is enforced by CI.
[!WARNING] CI GATE · verb allow-list —
new_rulemust start with one ofAlways,Never,Before,After,Prefer,Avoid,Use,Do,Ensure. Anything else is rejected.
Bad: "SQL injection is dangerous"
Good: "Never concatenate user input directly into SQL queries. Always use prepared statements."
One file per category. Domain rules go to a project file, not a global one.
| Error category | Target file |
|---|---|
development | skills/code-quality/SKILL.md |
git | skills/git-conventions/SKILL.md |
deployment | skills/review-deployment/SKILL.md |
security | skills/code-quality/SKILL.md (Security section) |
performance | skills/code-quality/SKILL.md (Performance section) |
domain | skills/<project>/SKILL.md |
At the end of the matching section. Reference the ERR-ID.
Reference: ERR-YYYY-NNN.Never push to main directly. The label triggers the lint-rules workflow.
git checkout -b learn/ERR-YYYY-NNN
git add skills/
git diff --cached # MANDATORY human review step
git commit -m "learn(errors): ERR-YYYY-NNN — <short description>
Co-Authored-By: <your real name> <your-email@example.com>"
git push -u origin learn/ERR-YYYY-NNN
gh pr create --label needs-rule-review \
--title "learn(errors): ERR-YYYY-NNN" \
--body "Auto-generated rule. Reviewer: confirm rule wording and target file. CI \`lint-rules\` must pass."
Branch through CI gates and CODEOWNERS into a squash-merge on main.
Why a PR (not a direct commit). Four layers of gating.
| Layer | What it gates | Where |
|---|---|---|
lint-rules | Schema + verb allow-list + forbidden patterns | schemas/error-entry.json |
auto-approve-rule-pr | Diff scope (skills/** — error-log entry plus the target sub-skill) and Co-Authored-By: trailer | .github/workflows/auto-approve-rule-pr.yml |
| Branch protection | CODEOWNERS approval for skills/error-log/ | .github/CODEOWNERS |
| Human review | Final read of rule wording and target file | maintainer |
[!NOTE] CI GATE · four-layer gating — Every rule that goes live has been seen by a human. The validator is best-effort, not airtight — see SECURITY.md Limitations section.
The commit type learn makes self-extension visible in git log --grep="learn(".
When a legitimate rule must mention a forbidden pattern (e.g. preventing subprocess misuse).
skills/error-log/exceptions.yml:
allow_forbidden_pattern_for:
- ERR-YYYY-NNN # rationale: rule must mention `subprocess` to be specific
exceptions.yml changes — the bypass is auditable in git history.When the error log exceeds 50 entries. Manual diff review until eval framework lands.
1. Read all entries in skills/error-log/SKILL.md.
2. Group by root_cause similarity.
3. For groups with the same root cause:
- Keep the most detailed entry.
- Sum up all `count` values.
- Set `last_seen` to the most recent date.
- Delete the duplicates.
4. For entries older than 6 months with severity: low:
- Archive (move to a comment block or separate archive file).
- The rules derived from them remain in the sub-skills.
5. Open a PR: "chore(errors): consolidate error log (N entries merged)".
LLM-driven consolidation is non-deterministic. Until the eval framework (Phase 2 roadmap) reports a stable baseline, do consolidation manually with diff review. The threshold of 50 entries is a soft signal, not a forced rebuild.
Self-extension as a normal version-control discipline.
The agent doesn't just fix errors — it learns from them, and every lesson is a Git commit you can review, revert, or share. The PR-flow brings the standard engineering toolkit to rule learning: deterministic validation, branch protection, CODEOWNERS approval, and a public audit trail.
Your agent's mistakes — versioned. Self-learning skills, every commit. One source, four agent runtimes. That's the loop.
Git-versioned agent memory — agents that never make the same mistake twice.
Apply when generating ideas, exploring solution space, or facilitating divergent thinking before committing to an approach.
Apply when closing out a feature branch — pre-merge checklist, rebase, CI verification, cleanup, and post-merge steps.
Apply when writing or refactoring code. Generic rules to prevent the most common review comments — function length, naming, error handling, security, and tooling.
Apply when designing database schemas, writing migrations, or reviewing table structure. Covers naming, keys, indexes, constraints, nullability, and migration safety.
Apply when diagnosing a bug, reproducing a failure, or performing root cause analysis. Covers systematic isolation, binary search, logging strategy, and hypothesis-driven investigation.