Best for
- A repeated mistake appears across multiple tasks
- A successful pattern should be reused in the future
- A new constraint or workflow should be captured permanently
event4u-app/agent-config/src/skills/learning-to-rule-or-skill/SKILL.md
Use when a repeated learning, mistake, or successful pattern should be turned into a new rule or skill. Also use after completing a task to capture learnings from the work.
Decision brief
Also use after completing a task to capture learnings from the work.
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/event4u-app/agent-config --skill "src/skills/learning-to-rule-or-skill"Inspect the Agent Skill "learning-to-rule-or-skill" from https://github.com/event4u-app/agent-config/blob/0adf49a8ae84b0ff6e2de8759eea43257e020eff/src/skills/learning-to-rule-or-skill/SKILL.md at commit 0adf49a8ae84b0ff6e2de8759eea43257e020eff. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
Before proceeding, the learning MUST pass all gates:
A repeated mistake appears across multiple tasks A successful pattern should be reused in the future A new constraint or workflow should be captured permanently Reviewing post-task learnings or retrospectives Deciding whether a learning belongs in a rule or a skill After complet…
Turn repeated learnings into reusable project guidance Decide correctly between rule, skill, or update to an existing one Prevent the same mistakes from happening again Keep the system small, clear, and non-duplicative
A concrete learning, mistake, or successful pattern exists The learning can be stated clearly in one or two sentences Existing rules and skills can be checked for overlap
Same issue appeared at least twice → strongly consider codifying One-off or too narrow → do not create anything yet Standard tool knowledge (jq, docker, git basics) → Nothing — the model knows this If unsure between skill and guideline: does it need step-by-step decisions? → Ski…
Permission review
The documentation asks the agent to create, modify, or delete local files.
| A refinement of existing guidance | **Update** | Extend the existing file |Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 97/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 7 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Use this skill when:
agents/runtime/state/audit/<YYYY-MM>.jsonl,
audit-log-v1) surfaced
a repeated phase pattern via
extract_audit_patterns.ts
— the pattern's count ≥ 2 already satisfies the repetition gateDo not use this skill when:
| If the learning is... | Then... | Action |
|---|---|---|
| An always-true constraint ("never X", "always Y") | Rule | Create/update rule |
| A repeatable workflow with steps and validation | Skill | Create/update skill |
| A coding convention or reference material | Guideline | Create/update guideline |
| A reusable fix/refactor recipe for a specific problem (problem → before → after → verification) | Pattern | Create/update src/patterns/<slug>.md (see src/patterns/README.md) |
| Baseline model knowledge or standard tool usage | Nothing | Do not create anything |
| A refinement of existing guidance | Update | Extend the existing file |
src/patterns/ recipe (never auto-apply) — the human decides whether to use itBefore proceeding, the learning MUST pass all gates:
| Gate | Question |
|---|---|
| Repetition | Occurred 2+ times OR clearly generalizable? |
| Impact | Improves correctness, reliability, or consistency? |
| Failure pattern | Prevents a real, observed failure? |
| Non-duplication | No existing rule/skill/guideline/command covers this? Verify via § 4 search protocol — a negative grep alone is not proof. |
| Scope fit | Fits rule, skill, or guideline? |
| Minimal | Update existing preferred over creation? |
If ANY gate fails → stop. Do not create or update anything.
Memory-entry rejection criteria live in /memory:add (see § "When to skip").
Write as a concrete sentence.
Good:
Bad:
Classify by type:
Tag with feedback category (for tracking/aggregation):
skill-weakness — skill gave wrong or incomplete guidancerule-weakness — rule was too vague or missed a caserouting-issue — wrong skill was selectedassumption-issue — agent made bad assumptionsverification-gap — verification step was missing or weakoptimization-overreach — optimize command suggested harmful changeChoose one:
A grep that returns zero hits is not proof of no overlap. Knowledge in
this package is distributed across five surfaces — skills/, rules/,
docs/guidelines/, commands/, src/patterns/. Skip any of them and recall
drops. Run all the steps before declaring "no overlap":
Step 1 — list all five surfaces. Directory taxonomy is free evidence:
ls src/skills/ \
src/rules/ \
docs/guidelines/ \
dist/agent-src/commands/ \
src/patterns/
Sub-directories matter — docs/guidelines/php/patterns/, docs/guidelines/agent-infra/,
etc. carry topic taxonomies a flat file scan misses. Always descend one level.
Step 2 — grep with both vocabularies. Search for solution-words and problem-words. Solution-only grep is confirmation bias — the existing artifact may name the symptom, not the cure.
| Vocabulary | Example for "agents miss Strategy pattern, write switch chains" |
|---|---|
| Solution-words | strategy, registry, polymorph, interface |
| Problem-words | discriminator, enum.*match, switch.*on, if.*else.*chain |
grep -rl -E "<solution-words>|<problem-words>" src/ docs/guidelines/
Step 3 — taxonomy scan. For any topic with a likely sub-folder
(patterns/, php/, laravel/, agent-infra/), ls that folder
before reading any file. Filename alone often answers the overlap question.
Step 4 — sample, do not just list. On any keyword overlap from steps 2–3, open and skim the 3 nearest matches — read § headings, the "When to use" / "Overview" block, and the examples list. Listing filenames is not enough; semantic overlap hides behind unrelated keywords.
Only after all four steps return clean → declare "no overlap" and proceed. Citation in the proposal: "Reviewed before drafting: " — this is the audit trail § 0's Non-duplication gate verifies against.
→ When the parent task is "create a new artifact", artifact-drafting-protocol
Phase B (Research) requires this same protocol — single source of truth.
If rule:
If skill:
Prefer:
The output of this skill is a curated proposal under
agents/proposals/<proposal_id>.md, using the template at
.augment/templates/agents/proposal.example.md (shipped by the
package). This is the input to the five-stage pipeline
(capture → classify → propose → gate → upstream); see
self-improvement-pipeline.
Mandatory fields the draft MUST fill:
proposal_id — stable kebab-case slug, unique in this repotype — rule | skill | command | guidelinescope — project (stays in agents/overrides/) or package
(contributed upstream via upstream-contribute)source_learning — path to the agents/learnings/<date>-<slug>.md
file this proposal was captured fromevidence — at least two independent references (PR, issue,
incident, review-comment, test-failure, or audit-log line ids
per audit-log-v1);
entries that all resolve to the same PR or the same audit-log
run_id are rejected by the gate (independence floor)Proposed artefact (§4) — the full draft body, no TODO / TBDSuccess signal (§7) — one metric, one baseline, one target, one
evaluation dateRun ./agent-config proposal:check agents/proposals/<id>.md
before handing to upstream-contribute. The
gate is hard: non-zero exit = the proposal does not move
to stage gated.
If the learning came from an agents/knowledge/procedures/skill-candidates.md
entry or any other agents/knowledge/ page (see § "Knowledge-candidate
learnings" below), promotion is not complete until the source is
degraded to a pointer — this is what prevents double-maintenance between
the knowledge page and the new artifact:
./scripts-run src/scripts/degrade_to_pointer \
--source "agents/knowledge/procedures/skill-candidates.md#<topic>" \
--artifact "<promoted-artifact-path>" \
--date "<YYYY-MM-DD>"
This rewrites the source entry to Promoted to <artifact> on <date>; see <path>. and regenerates agents/knowledge/INDEX.md. Skip this step
only when the learning's source was NOT a knowledge page (e.g. a direct
user request, an audit-log pattern, or a one-off observation).
For the decision step (what this skill prints to the user):
agents/proposals/<proposal_id>.md) and gate status
(./agent-config proposal:check exit 0 = ready for review)The proposal file itself follows
proposal.example.md verbatim — all ten sections, YAML frontmatter
complete, draft body in §4.
Learning: "Nested triple backticks broke markdown copyability twice this week." Decision: Update existing markdown rule + add markdown-safe skill if none exists.
Learning: "Route checks keep failing when done via text parsing." Decision: Create focused skill for Laravel route inspection via JSON and jq.
Learning: "I forgot to run PHPStan once." Decision: No action — one-off, already covered by verify-before-complete rule.
Learning: "We re-invented a per-format PDF extractor in three different
analysis skills."
Decision: Update the affected skills to dispatch to
markitdown instead of writing new
extractors. Non-text ingestion (PDF / DOCX / XLSX / PPTX / image /
audio) goes through the upstream markitdown-mcp server first; only
write a custom extractor if markitdown cannot handle the format and
the gap is documented in its skill body.
When the input is a pattern surfaced by
extract_audit_patterns.ts
mining agents/runtime/state/audit/<YYYY-MM>.jsonl
(audit-log-v1):
pattern.summary is the one-sentence
statement, pattern.line_ids is the evidence.count ≥ 2. Skip
to §3 (decide the target) — overlap check (§4) and proposal
draft (§8) remain mandatory.run_id count as one piece of evidence. The mining script
already de-duplicates by run_id; the gate trusts that output.source_learning: agents/runtime/state/audit/<YYYY-MM>.jsonl#<line_ids>
and link the mining-script run id, so the human reviewer can
reproduce the pattern from the raw audit log.When the input is an entry from agents/knowledge/procedures/skill-candidates.md
that reached candidate status (≥ 3 mentions across distinct sessions —
see update_skill_candidates.ts and the
memory-consolidation recurrence
step):
Sessions:
list names the chat-history session ids the topic recurred in —
pull those via /chat-history import
(select by id) or the host's native transcript view before
drafting. A skill written purely from the recurrence-counter
summary tends to be plausible but wrong; the original transcripts
carry the detail the summary dropped.source_learning to the knowledge-candidate entry
(agents/knowledge/procedures/skill-candidates.md#<topic>).Prefer updating existing rule/skill when possible. Create new files only when the learning introduces a clearly distinct pattern.