[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6BZRGYXRRMN67NPQ9MJ137H":3,"skill-same:01M6BZRGYXRRMN67NPQ9MJ137H":51},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":25,"linkOnly":26,"markdownContent":27,"markdownBody":28,"frontMatter":29,"refName":30,"commitSha":31,"skillDirectory":32,"forksCount":14,"repositoryHtmlUrl":33,"repositoryHomepageUrl":6,"ownerHtmlUrl":34,"ownerBlogUrl":6,"ownerDescription":35,"updatedAt":36,"install":37,"resources":50},"01M6BZRGYXRRMN67NPQ9MJ137H","evolve",null,"Self-improvement loop for opencode configuration. Analyzes session history, queues candidate learnings, lints them, promotes high-confidence rules, and tracks rule effectiveness via Reflexion-style feedback. Use when you want the agent setup to learn from accumulated experience.","twidxuga\u002Fdotfiles","twidxuga","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F12471681?v=4","01M6BZR45BH8JCC79Q9SKSS6SC","Ricardo Santos","01M6BZR49CRKSBZYQD1WNQWCXW",0,"MIT","https:\u002F\u002Fgithub.com\u002Ftwidxuga\u002Fdotfiles\u002Fblob\u002Fmain\u002Fopencode\u002Fdot-config\u002Fopencode\u002Fskills\u002Fevolve\u002FSKILL.md",[],[5,19,20,21,22,23,24],"setup","learn","loop","feedback","history","Rules","2026-11-10 10:12:30",false,"---\nname: evolve\ndescription: Self-improvement loop for opencode configuration. Analyzes session history, queues candidate learnings, lints them, promotes high-confidence rules, and tracks rule effectiveness via Reflexion-style feedback. Use when you want the agent setup to learn from accumulated experience.\n---\n\n# Evolve Skill v2 — Configuration Self-Improvement with Feedback Loop\n\nYou are running the **evolve loop**: a structured capture → queue → lint → promote → measure pipeline that improves the opencode agent configuration based on real session data.\n\nThis is v2. The big differences from v1:\n1. Candidates go to a **queue** first; promotion is a separate, evidence-gated step\n2. **Sensitivity classification** uses a maintained term list + regex pack (not hardcoded grep)\n3. **Reflexion feedback loop**: every promoted rule gets a `rule_id` and we measure whether the symptom recurs\n4. **Detection beyond keywords**: tool-failure mining, repeated-question detection, runtime-discovery extraction\n5. **Better scoring**: includes reversibility, effort, and blast radius\n6. **Dual logs**: generic to public, full to private\n\n## CRITICAL: Public vs Private File Routing\n\n`~\u002F.config\u002Fopencode\u002F` is published to a **public GitHub repository**. NEVER write content there that names the user's employer, internal hostnames, AWS profiles, internal repo paths, internal namespaces, or any other private detail.\n\n**Private knowledge base lives at `~\u002FDocuments\u002FQuickAccess\u002Fkb\u002Fai-agents\u002F`** (Dropbox-synced, never pushed).\n\n### Sensitivity Classifier (apply to EVERY finding AND its evidence)\n\nRun all THREE checks before deciding public vs private:\n\n1. **Term match** — grep proposed content against `~\u002FDocuments\u002FQuickAccess\u002Fkb\u002Fai-agents\u002FPRIVATE-TERMS.txt` (case-insensitive substring). Any hit → private.\n2. **Regex match** — grep proposed content against `~\u002FDocuments\u002FQuickAccess\u002Fkb\u002Fai-agents\u002FSENSITIVITY-REGEX.txt`. Any hit → private.\n3. **Provenance check** — if the source session referenced any private file, or any session read pulled content from `~\u002FDocuments\u002FQuickAccess\u002F` or internal repo paths, the finding is sensitive **by association**, even if the proposed text looks generic.\n\n**Default-private** when any uncertainty remains. Move to public only when all three checks pass AND the content describes generic tools\u002FCLIs\u002FAnthropic\u002FSlack\u002FMCP behaviour with no inferred internal context.\n\nBoth files are user-maintained and updated by `\u002Fevolve` when new sensitive terms are discovered.\n\n## What You Are Improving\n\n### Public files (in `~\u002F.config\u002Fopencode\u002F`, published)\n| File | Purpose | When to update |\n|------|---------|----------------|\n| `AGENTS.md` | Global system prompt | Generic stack patterns, workflow preferences |\n| `rules\u002Fglobal.md` | Always-active rules | Generic anti-patterns, generic CLI rules |\n| `rules\u002Fterraform.md` | Terraform rules | Generic HCL patterns |\n| `opencode.json` | Core config | Model, watcher, generic agents, permission policies |\n| `oh-my-openagent.json` | Agent framework | Generic concurrency\u002Ftimeout tuning |\n| `commands\u002F*.json` | Slash commands | Generic reusable workflows |\n| `skills\u002F*\u002FSKILL.md` | Agent skills | Generic skill instructions |\n| `agent\u002F*.md` | Agent definitions | Generic specialist prompts |\n| `EVOLUTION_LOG.md` | Public log | Generic entries only |\n\n### Private files (in `~\u002FDocuments\u002FQuickAccess\u002Fkb\u002Fai-agents\u002F`, off-repo)\n| File | Purpose |\n|------|---------|\n| `AGENTS.md` | Company\u002Finfra root TOC |\n| `aws.md`, `auth.md`, `dynamic-envs.md`, `observability.md`, `terraform-conventions.md` | Topic files (split from a monolithic AGENTS.md) |\n| `rules-terraform.md` | Internal IRSA\u002FSCP\u002Fnamespace\u002Fbundling rules |\n| `EVOLUTION_LOG.md` | Full evolve history with sensitive details |\n| `QUICKACCESS-INDEX.md` | Recursive index of `~\u002FDocuments\u002FQuickAccess\u002F` |\n| `QUEUE.jsonl` | Candidate learnings awaiting promotion (one event per line) |\n| `RULES-INDEX.jsonl` | Per-rule telemetry: created\u002Fcited\u002Frecurred\u002Fvalidated\u002Fdemoted |\n| `PRIVATE-TERMS.txt` | Term list for sensitivity classifier |\n| `SENSITIVITY-REGEX.txt` | Regex pack for sensitivity classifier |\n\n---\n\n## Phase 0 — Regression Check (run FIRST on every `\u002Fevolve`)\n\nBefore doing anything else, scan public files for any sensitive strings that may have leaked since last run:\n\n```bash\n# IMPORTANT: filter out comment lines and empty lines BEFORE passing to grep.\n# Empty lines in the pattern file would cause grep to match every line.\n\n# 0a. Scan public files against the private-terms list (case-insensitive substring)\nTERMS=$(grep -vE '^\\s*(#|$)' ~\u002FDocuments\u002FQuickAccess\u002Fkb\u002Fai-agents\u002FPRIVATE-TERMS.txt)\necho \"$TERMS\" | grep -inFf \u002Fdev\u002Fstdin \\\n  ~\u002F.config\u002Fopencode\u002FAGENTS.md \\\n  ~\u002F.config\u002Fopencode\u002FEVOLUTION_LOG.md \\\n  ~\u002F.config\u002Fopencode\u002Frules\u002F*.md \\\n  ~\u002F.config\u002Fopencode\u002Fskills\u002Fevolve\u002FSKILL.md \\\n  ~\u002F.config\u002Fopencode\u002Fcommands\u002F*.json \\\n  ~\u002F.config\u002Fopencode\u002Fcommand\u002F*.md \\\n  ~\u002F.config\u002Fopencode\u002Fagent\u002F*.md \\\n  ~\u002F.config\u002Fopencode\u002Fopencode.json \\\n  ~\u002F.config\u002Fopencode\u002Foh-my-openagent.json \\\n  2>\u002Fdev\u002Fnull\n\n# 0b. Scan against the regex pack\nREGEXES=$(grep -vE '^\\s*(#|$)' ~\u002FDocuments\u002FQuickAccess\u002Fkb\u002Fai-agents\u002FSENSITIVITY-REGEX.txt)\necho \"$REGEXES\" | grep -nEf \u002Fdev\u002Fstdin \\\n  ~\u002F.config\u002Fopencode\u002FAGENTS.md \\\n  ~\u002F.config\u002Fopencode\u002FEVOLUTION_LOG.md \\\n  ~\u002F.config\u002Fopencode\u002Frules\u002F*.md \\\n  ~\u002F.config\u002Fopencode\u002Fskills\u002Fevolve\u002FSKILL.md \\\n  ~\u002F.config\u002Fopencode\u002Fcommands\u002F*.json \\\n  ~\u002F.config\u002Fopencode\u002Fcommand\u002F*.md \\\n  ~\u002F.config\u002Fopencode\u002Fagent\u002F*.md \\\n  2>\u002Fdev\u002Fnull\n```\n\nIf anything matches: **report to user and STOP**. Resolution choices:\n- Move the line to private kb and replace with a pointer\n- Accept and add the term to an allowlist (rare)\n- Strip the line entirely\n\nNever auto-fix regressions — user decides.\n\n---\n\n## Phase 1 — Session Analysis (parallel)\n\nRun 1a-1d in PARALLEL; they're independent.\n\n### 1a. Recent sessions\n```\nsession_list(limit=20, from_date=\"\u003C2 weeks ago>\")\n```\nRead each session with >4 messages:\n```\nsession_read(session_id=\"...\", include_todos=true)\n```\n\n### 1b. Keyword pattern search\n```\nsession_search(query=\"don't\", limit=20)        # corrections\nsession_search(query=\"no, \", limit=20)         # corrections\nsession_search(query=\"wrong\", limit=20)\nsession_search(query=\"instead\", limit=20)\nsession_search(query=\"actually\", limit=20)\nsession_search(query=\"never\", limit=20)\nsession_search(query=\"always\", limit=20)\nsession_search(query=\"remember\", limit=20)\nsession_search(query=\"fail\", limit=20)         # NEW v2: tool-failure mining\nsession_search(query=\"timeout\", limit=20)      # NEW v2\nsession_search(query=\"error\", limit=30)\n```\n\n### 1c. opencode-mem memories\n```bash\nfor db in ~\u002F.opencode-mem\u002Fdata\u002Fprojects\u002Fproject_*_shard_0.db; do\n  sqlite3 \"$db\" \"SELECT content, created_at FROM memories ORDER BY created_at DESC LIMIT 30;\"\ndone\n```\n\n### 1d. Beyond-keyword detection (NEW in v2)\n\nLook for these patterns in the session transcripts you read in 1a:\n- **Tool-failure clusters**: same tool failed 3+ times in one session → tool-usage rule gap or agent prompt issue\n- **Repeated identical questions across sessions**: agent re-discovered the same thing → missing context in AGENTS.md\n- **Runtime discoveries**: agent had to `grep` \u002F `read` to find something basic (file path, config name) → candidate for AGENTS.md\n- **Oracle misuse**: oracle was called for a trivial task, or NOT called for a hard one → oracle-invocation rule\n- **Model-selection mistakes**: expensive model used for trivial work, or vice versa\n- **Overfitting signals**: a rule from a previous evolve was cited but contradicted by the user → demote candidate\n\n---\n\n## Phase 2 — Pattern Classification\n\nFor each finding, decide:\n\n### A. Category (extended in v2)\n\n| Category | Signal |\n|----------|--------|\n| `correction` | User said no\u002Fdon't\u002Fwrong\u002Factually |\n| `friction` | Same task done manually 3+ times |\n| `missing-context` | Agent had to discover at runtime; same question across sessions |\n| `config-bug` | Something broke due to config |\n| `missing-agent` | Task needed specialist that doesn't exist |\n| `outdated-rule` | Rule contradicts actual practice |\n| `outdated-context` | Codebase moved on; rule references nonexistent files |\n| `skill-gap` | Skill instructions wrong or incomplete |\n| `pattern` | Recurring workflow → command candidate |\n| `tool-failure-pattern` | Same tool fails repeatedly → tool-usage rule |\n| `model-selection-mistake` | Wrong model tier picked |\n| `oracle-mis-invocation` | Oracle over- or under-used |\n| `overfitting` | Existing rule too narrow\u002Fspecific |\n| `privacy-leak` | Sensitive content found in public files |\n\n### B. Sensitivity (run all 3 checks from the top of this skill)\n`public` | `private` | `unknown` (default-private)\n\n### C. Source provenance\nRecord source session IDs and a short evidence quote (≤200 chars).\n\n---\n\n## Phase 3 — Scoring v2\n\nFor each finding, score five dimensions (1-5):\n- **Impact** — how much does this improve future sessions?\n- **Confidence** — how certain is this the right change?\n- **Reversibility** — how easy to undo if wrong? (5 = trivial, 1 = breaks many things)\n- **Risk** — likelihood of breaking something else (5 = high, 1 = none)\n- **Effort** — implementation cost (5 = many file changes, 1 = one-line)\n- **BlastRadius** — how many things this affects (5 = global, 1 = isolated)\n\n**Value = (Impact × Confidence × Reversibility) \u002F (Risk × Effort × BlastRadius)**\n\nDecision matrix:\n| Value | Action |\n|-------|--------|\n| `> 4` | **Apply now** (auto-write to public\u002Fprivate file) |\n| `> 1` | **Queue** in `QUEUE.jsonl` for next-run review |\n| `\u003C= 1` | Skip — log as \"skipped\" with reason |\n\nSpecial cases:\n- Any `privacy-leak` category → **apply now** regardless of score (privacy is urgent)\n- Any `outdated-rule` or `outdated-context` → **queue**, never auto-delete\n- Any `overfitting` → **queue** with proposed rewrite\n\n---\n\n## Phase 4 — Apply or Queue\n\n### Auto-apply category (score > 4, low blast-radius)\n\n| Change type | Auto-apply? |\n|-------------|-------------|\n| Additive rule (new bullet in existing section) | ✅ Yes |\n| New log entry | ✅ Yes |\n| `QUICKACCESS-INDEX.md` row addition | ✅ Yes |\n| `watcher.ignore` addition | ✅ Yes |\n| Append to private `aws.md`\u002F`auth.md`\u002Fetc | ✅ Yes |\n| New `PRIVATE-TERMS.txt` entry | ✅ Yes |\n| `QUEUE.jsonl` append | ✅ Yes |\n\n### Approval-required category (always queue with notification)\n\n| Change type | Why approval |\n|-------------|--------------|\n| Delete or rewrite any existing rule | Reversibility risk |\n| `opencode.json` structural change (plugin, mcp, provider) | Global blast radius |\n| Model\u002Fprovider switch | Cost implications |\n| New slash command | New surface area |\n| New skill or new agent file | New behaviour |\n| Any change with sensitivity=unknown | Privacy risk |\n| Any `overfitting` rewrite | Could break workflow that depends on current rule |\n\n### Diff-before-write rule\nAlways print the diff (old vs new) before writing. For private kb files, the diff is shown in the run log.\n\n### Writing a rule (with rule_id tracking)\n\nWhen writing a new rule to `rules\u002F*.md` or `kb\u002Fai-agents\u002F*.md`:\n1. Generate `rule_id` = `r` + 6 random hex chars (e.g. `r3a7f1c`)\n2. Add an HTML-comment with the rule_id at the end of the line: `\u003C!-- rule:r3a7f1c -->`\n   - Example: `- Never set temperature on extended-thinking agents \u003C!-- rule:r3a7f1c -->`\n3. Append a `created` event to `~\u002FDocuments\u002FQuickAccess\u002Fkb\u002Fai-agents\u002FRULES-INDEX.jsonl`:\n```json\n{\"ts\":\"2026-05-15T20:00:00Z\",\"rule_id\":\"r3a7f1c\",\"event\":\"created\",\"source_session_id\":\"ses_xxx\",\"file\":\"~\u002F.config\u002Fopencode\u002Frules\u002Fglobal.md\",\"line\":99,\"evidence_quote\":\"...\",\"category\":\"correction\"}\n```\n\n### Queueing a candidate\n\nAppend one line to `~\u002FDocuments\u002FQuickAccess\u002Fkb\u002Fai-agents\u002FQUEUE.jsonl`:\n```json\n{\"id\":\"q3a7f1c\",\"ts\":\"2026-05-15T20:00:00Z\",\"source_session_ids\":[\"ses_xxx\"],\"evidence_quote\":\"...\",\"category\":\"correction\",\"summary\":\"...\",\"confidence\":3,\"recurrence_count\":1,\"sensitivity\":\"private\",\"proposed_target_file\":\"~\u002FDocuments\u002FQuickAccess\u002Fkb\u002Fai-agents\u002Faws.md\",\"status\":\"pending\",\"notes\":\"score 1.8 \u003C apply threshold; recheck next run\"}\n```\n\n---\n\n## Phase 5 — Dual Log\n\nAppend TWO entries per run:\n\n### Public log: `~\u002F.config\u002Fopencode\u002FEVOLUTION_LOG.md`\n- Generic findings only\n- No company\u002Finternal names\n- No source session IDs that may correlate to private work\n- Format: short markdown summary\n\n### Private log: `~\u002FDocuments\u002FQuickAccess\u002Fkb\u002Fai-agents\u002FEVOLUTION_LOG.md`\n- Full version: all findings, sources, evidence, rule_ids, queue events\n- Includes everything from public log + the sensitive details\n\nBoth logs use this top-level structure:\n\n```markdown\n## YYYY-MM-DD — Evolution Run [v2]\n\n### Sessions Analysed\n- N sessions; date range; brief patterns\n\n### Applied (Public)\n- `rules\u002Fglobal.md` rule:r3a7f1c → \"\u003Csummary>\" (Value=4.5)\n\n### Applied (Private — kb\u002Fai-agents\u002F)  [omit from public log]\n- `kb\u002Fai-agents\u002Fauth.md` rule:r5b8d2e → \"\u003Csummary>\" (Value=6.0)\n\n### Queued\n- q3a7f1c \"\u003Csummary>\" Value=1.8 → recheck if recurrence ≥ 3\n\n### Validated rules (recurrence dropped after promotion)\n- r5b8d2e: 4 prior recurrences → 0 in last 2 weeks → marked validated\n\n### Demoted rules (no impact \u002F contradicted)\n- r9f4a1c: rule cited 0 times, symptom still recurring → demoted to QUEUE\n\n### Skipped (low value)\n- \"\u003Cfinding>\" Value=0.6 reason: blast-radius too high\n\n### Privacy regressions (Phase 0)\n- None [or: list with action taken]\n\n### Next focus\n- Watch for: ...\n```\n\n---\n\n## Phase 6 — Index + Telemetry Maintenance\n\n### 6a. RULES-INDEX feedback loop (Reflexion)\n\nFor every existing `rule_id` from previous runs:\n1. Search session transcripts for the rule's symptom (evidence quote from the `created` event)\n2. Count recurrences in sessions AFTER the `created` timestamp\n3. Search session transcripts for the rule itself being cited (the agent quoting \u002F following it)\n4. Update events:\n   - `validated` if symptom recurrence dropped to ≤1 in the last N sessions AND citations > 0\n   - `cited` if rule was followed (with session ID)\n   - `recurrence_detected` if symptom recurred despite rule existing\n   - `stale` if symptom hasn't recurred in 6+ months AND rule never cited\n   - `demoted` if recurred 3+ times despite rule (move back to QUEUE with notes)\n\n### 6b. QUICKACCESS-INDEX.md (incremental)\n\nDon't rebuild from scratch. Cache mtime+size per file in a sidecar `~\u002FDocuments\u002FQuickAccess\u002Fkb\u002Fai-agents\u002F.qa-index-cache.json` keyed by absolute path with `{mtime, size, summary}` per entry.\n\nFor each file in `~\u002FDocuments\u002FQuickAccess\u002F`:\n- If mtime+size unchanged → skip\n- If new → read first 3 lines, generate one-line summary, add row, update cache\n- If missing → mark as \"removed (verify with user)\" in index, do NOT delete entry\n\nCache example schema (one entry per file, keyed by path):\n```\n{\"\u003Cfile-path>\": {\"mtime\": \"...\", \"size\": 12345, \"summary\": \"...\"}}\n```\n\nFull rebuild monthly (record date in `QUICKACCESS-INDEX.md`).\n\n### 6c. PRIVATE-TERMS.txt maintenance\n\nIf Phase 0 caught a sensitive string that ISN'T in PRIVATE-TERMS.txt:\n\n- **Normal mode**: auto-add if the string matches an existing regex in `SENSITIVITY-REGEX.txt` (clearly sensitive); otherwise propose to user and wait for confirmation.\n- **`--dry-run` mode**: never write. Print the candidate term, the matching regex (if any), and the proposed action. Output goes to the dry-run summary at end of run, not silently dropped.\n\n---\n\n## Modes \u002F Arguments\n\n| `$ARGUMENTS` | Behaviour |\n|--------------|-----------|\n| (empty) | Full pipeline: Phase 0 → 6 |\n| `--dry-run` | Run all phases; print diffs; write nothing |\n| `--promote` | Skip Phase 1-3; review QUEUE; promote items with `recurrence_count ≥ 3` or `confidence ≥ 4` |\n| `--reject \u003Cid>` | Mark queue entry `id` as `status:rejected` |\n| `--focus=rules` | Only update rules files |\n| `--focus=agents` | Only update AGENTS.md (public + private topic files) |\n| `--focus=skills` | Only update skills |\n| `--focus=commands` | Only update commands |\n| `--focus=opencode` | Only analyse opencode.json |\n| `--focus=index` | Only run Phase 6b (incremental index) |\n| `--focus=privacy` | Only run Phase 0 |\n| `--review-queue` | List queued items + their stats; no writes |\n| `--validate-rules` | Only run Phase 6a (Reflexion loop); no new findings |\n| `--rebuild-index` | Force full QUICKACCESS-INDEX rebuild |\n| `--since=YYYY-MM-DD` | Limit Phase 1 to sessions after this date |\n| `--session=\u003Cid>` | Only analyse one session |\n\nThese ARE valid stop points. Don't continue past them.\n\n---\n\n## Safety Constraints\n\n- **Never commit** changes to git\n- **Never delete** existing rules without explicit user approval (demote\u002Fqueue instead)\n- **Never delete or rename** files under `~\u002FDocuments\u002FQuickAccess\u002F`\n- **Never modify** `opencode.json`, `opencode-mem.jsonc`, or `oh-my-openagent.json` without showing full diff\n- **Never touch** `plugin` array or `mcp` block in `opencode.json` without explicit user approval\n- **Never write company-identifying content into `~\u002F.config\u002Fopencode\u002F`** — always route private\n- **Always** read the file before editing\n- **Always** show the diff\n- **Stop and ask** on contradictions between sessions\n\n## Verbose vs structured output\n\nEnd-of-run: produce BOTH\n- Long markdown summary (for human) → appended to dual logs\n- Compact JSON manifest (for diffing\u002Fautomation) → `~\u002FDocuments\u002FQuickAccess\u002Fkb\u002Fai-agents\u002Fevolve-runs\u002F\u003Cdate>.json` with: `{run_id, ts, mode, findings, applied, queued, skipped, validated, demoted, sensitivity_counts}`\n","# Evolve Skill v2 — Configuration Self-Improvement with Feedback Loop\n\nYou are running the **evolve loop**: a structured capture → queue → lint → promote → measure pipeline that improves the opencode agent configuration based on real session data.\n\nThis is v2. The big differences from v1:\n1. Candidates go to a **queue** first; promotion is a separate, evidence-gated step\n2. **Sensitivity classification** uses a maintained term list + regex pack (not hardcoded grep)\n3. **Reflexion feedback loop**: every promoted rule gets a `rule_id` and we measure whether the symptom recurs\n4. **Detection beyond keywords**: tool-failure mining, repeated-question detection, runtime-discovery extraction\n5. **Better scoring**: includes reversibility, effort, and blast radius\n6. **Dual logs**: generic to public, full to private\n\n## CRITICAL: Public vs Private File Routing\n\n`~\u002F.config\u002Fopencode\u002F` is published to a **public GitHub repository**. NEVER write content there that names the user's employer, internal hostnames, AWS profiles, internal repo paths, internal namespaces, or any other private detail.\n\n**Private knowledge base lives at `~\u002FDocuments\u002FQuickAccess\u002Fkb\u002Fai-agents\u002F`** (Dropbox-synced, never pushed).\n\n### Sensitivity Classifier (apply to EVERY finding AND its evidence)\n\nRun all THREE checks before deciding public vs private:\n\n1. **Term match** — grep proposed content against `~\u002FDocuments\u002FQuickAccess\u002Fkb\u002Fai-agents\u002FPRIVATE-TERMS.txt` (case-insensitive substring). Any hit → private.\n2. **Regex match** — grep proposed content against `~\u002FDocuments\u002FQuickAccess\u002Fkb\u002Fai-agents\u002FSENSITIVITY-REGEX.txt`. Any hit → private.\n3. **Provenance check** — if the source session referenced any private file, or any session read pulled content from `~\u002FDocuments\u002FQuickAccess\u002F` or internal repo paths, the finding is sensitive **by association**, even if the proposed text looks generic.\n\n**Default-private** when any uncertainty remains. Move to public only when all three checks pass AND the content describes generic tools\u002FCLIs\u002FAnthropic\u002FSlack\u002FMCP behaviour with no inferred internal context.\n\nBoth files are user-maintained and updated by `\u002Fevolve` when new sensitive terms are discovered.\n\n## What You Are Improving\n\n### Public files (in `~\u002F.config\u002Fopencode\u002F`, published)\n| File | Purpose | When to update |\n|------|---------|----------------|\n| `AGENTS.md` | Global system prompt | Generic stack patterns, workflow preferences |\n| `rules\u002Fglobal.md` | Always-active rules | Generic anti-patterns, generic CLI rules |\n| `rules\u002Fterraform.md` | Terraform rules | Generic HCL patterns |\n| `opencode.json` | Core config | Model, watcher, generic agents, permission policies |\n| `oh-my-openagent.json` | Agent framework | Generic concurrency\u002Ftimeout tuning |\n| `commands\u002F*.json` | Slash commands | Generic reusable workflows |\n| `skills\u002F*\u002FSKILL.md` | Agent skills | Generic skill instructions |\n| `agent\u002F*.md` | Agent definitions | Generic specialist prompts |\n| `EVOLUTION_LOG.md` | Public log | Generic entries only |\n\n### Private files (in `~\u002FDocuments\u002FQuickAccess\u002Fkb\u002Fai-agents\u002F`, off-repo)\n| File | Purpose |\n|------|---------|\n| `AGENTS.md` | Company\u002Finfra root TOC |\n| `aws.md`, `auth.md`, `dynamic-envs.md`, `observability.md`, `terraform-conventions.md` | Topic files (split from a monolithic AGENTS.md) |\n| `rules-terraform.md` | Internal IRSA\u002FSCP\u002Fnamespace\u002Fbundling rules |\n| `EVOLUTION_LOG.md` | Full evolve history with sensitive details |\n| `QUICKACCESS-INDEX.md` | Recursive index of `~\u002FDocuments\u002FQuickAccess\u002F` |\n| `QUEUE.jsonl` | Candidate learnings awaiting promotion (one event per line) |\n| `RULES-INDEX.jsonl` | Per-rule telemetry: created\u002Fcited\u002Frecurred\u002Fvalidated\u002Fdemoted |\n| `PRIVATE-TERMS.txt` | Term list for sensitivity classifier |\n| `SENSITIVITY-REGEX.txt` | Regex pack for sensitivity classifier |\n\n---\n\n## Phase 0 — Regression Check (run FIRST on every `\u002Fevolve`)\n\nBefore doing anything else, scan public files for any sensitive strings that may have leaked since last run:\n\n```bash\n# IMPORTANT: filter out comment lines and empty lines BEFORE passing to grep.\n# Empty lines in the pattern file would cause grep to match every line.\n\n# 0a. Scan public files against the private-terms list (case-insensitive substring)\nTERMS=$(grep -vE '^\\s*(#|$)' ~\u002FDocuments\u002FQuickAccess\u002Fkb\u002Fai-agents\u002FPRIVATE-TERMS.txt)\necho \"$TERMS\" | grep -inFf \u002Fdev\u002Fstdin \\\n  ~\u002F.config\u002Fopencode\u002FAGENTS.md \\\n  ~\u002F.config\u002Fopencode\u002FEVOLUTION_LOG.md \\\n  ~\u002F.config\u002Fopencode\u002Frules\u002F*.md \\\n  ~\u002F.config\u002Fopencode\u002Fskills\u002Fevolve\u002FSKILL.md \\\n  ~\u002F.config\u002Fopencode\u002Fcommands\u002F*.json \\\n  ~\u002F.config\u002Fopencode\u002Fcommand\u002F*.md \\\n  ~\u002F.config\u002Fopencode\u002Fagent\u002F*.md \\\n  ~\u002F.config\u002Fopencode\u002Fopencode.json \\\n  ~\u002F.config\u002Fopencode\u002Foh-my-openagent.json \\\n  2>\u002Fdev\u002Fnull\n\n# 0b. Scan against the regex pack\nREGEXES=$(grep -vE '^\\s*(#|$)' ~\u002FDocuments\u002FQuickAccess\u002Fkb\u002Fai-agents\u002FSENSITIVITY-REGEX.txt)\necho \"$REGEXES\" | grep -nEf \u002Fdev\u002Fstdin \\\n  ~\u002F.config\u002Fopencode\u002FAGENTS.md \\\n  ~\u002F.config\u002Fopencode\u002FEVOLUTION_LOG.md \\\n  ~\u002F.config\u002Fopencode\u002Frules\u002F*.md \\\n  ~\u002F.config\u002Fopencode\u002Fskills\u002Fevolve\u002FSKILL.md \\\n  ~\u002F.config\u002Fopencode\u002Fcommands\u002F*.json \\\n  ~\u002F.config\u002Fopencode\u002Fcommand\u002F*.md \\\n  ~\u002F.config\u002Fopencode\u002Fagent\u002F*.md \\\n  2>\u002Fdev\u002Fnull\n```\n\nIf anything matches: **report to user and STOP**. Resolution choices:\n- Move the line to private kb and replace with a pointer\n- Accept and add the term to an allowlist (rare)\n- Strip the line entirely\n\nNever auto-fix regressions — user decides.\n\n---\n\n## Phase 1 — Session Analysis (parallel)\n\nRun 1a-1d in PARALLEL; they're independent.\n\n### 1a. Recent sessions\n```\nsession_list(limit=20, from_date=\"\u003C2 weeks ago>\")\n```\nRead each session with >4 messages:\n```\nsession_read(session_id=\"...\", include_todos=true)\n```\n\n### 1b. Keyword pattern search\n```\nsession_search(query=\"don't\", limit=20)        # corrections\nsession_search(query=\"no, \", limit=20)         # corrections\nsession_search(query=\"wrong\", limit=20)\nsession_search(query=\"instead\", limit=20)\nsession_search(query=\"actually\", limit=20)\nsession_search(query=\"never\", limit=20)\nsession_search(query=\"always\", limit=20)\nsession_search(query=\"remember\", limit=20)\nsession_search(query=\"fail\", limit=20)         # NEW v2: tool-failure mining\nsession_search(query=\"timeout\", limit=20)      # NEW v2\nsession_search(query=\"error\", limit=30)\n```\n\n### 1c. opencode-mem memories\n```bash\nfor db in ~\u002F.opencode-mem\u002Fdata\u002Fprojects\u002Fproject_*_shard_0.db; do\n  sqlite3 \"$db\" \"SELECT content, created_at FROM memories ORDER BY created_at DESC LIMIT 30;\"\ndone\n```\n\n### 1d. Beyond-keyword detection (NEW in v2)\n\nLook for these patterns in the session transcripts you read in 1a:\n- **Tool-failure clusters**: same tool failed 3+ times in one session → tool-usage rule gap or agent prompt issue\n- **Repeated identical questions across sessions**: agent re-discovered the same thing → missing context in AGENTS.md\n- **Runtime discoveries**: agent had to `grep` \u002F `read` to find something basic (file path, config name) → candidate for AGENTS.md\n- **Oracle misuse**: oracle was called for a trivial task, or NOT called for a hard one → oracle-invocation rule\n- **Model-selection mistakes**: expensive model used for trivial work, or vice versa\n- **Overfitting signals**: a rule from a previous evolve was cited but contradicted by the user → demote candidate\n\n---\n\n## Phase 2 — Pattern Classification\n\nFor each finding, decide:\n\n### A. Category (extended in v2)\n\n| Category | Signal |\n|----------|--------|\n| `correction` | User said no\u002Fdon't\u002Fwrong\u002Factually |\n| `friction` | Same task done manually 3+ times |\n| `missing-context` | Agent had to discover at runtime; same question across sessions |\n| `config-bug` | Something broke due to config |\n| `missing-agent` | Task needed specialist that doesn't exist |\n| `outdated-rule` | Rule contradicts actual practice |\n| `outdated-context` | Codebase moved on; rule references nonexistent files |\n| `skill-gap` | Skill instructions wrong or incomplete |\n| `pattern` | Recurring workflow → command candidate |\n| `tool-failure-pattern` | Same tool fails repeatedly → tool-usage rule |\n| `model-selection-mistake` | Wrong model tier picked |\n| `oracle-mis-invocation` | Oracle over- or under-used |\n| `overfitting` | Existing rule too narrow\u002Fspecific |\n| `privacy-leak` | Sensitive content found in public files |\n\n### B. Sensitivity (run all 3 checks from the top of this skill)\n`public` | `private` | `unknown` (default-private)\n\n### C. Source provenance\nRecord source session IDs and a short evidence quote (≤200 chars).\n\n---\n\n## Phase 3 — Scoring v2\n\nFor each finding, score five dimensions (1-5):\n- **Impact** — how much does this improve future sessions?\n- **Confidence** — how certain is this the right change?\n- **Reversibility** — how easy to undo if wrong? (5 = trivial, 1 = breaks many things)\n- **Risk** — likelihood of breaking something else (5 = high, 1 = none)\n- **Effort** — implementation cost (5 = many file changes, 1 = one-line)\n- **BlastRadius** — how many things this affects (5 = global, 1 = isolated)\n\n**Value = (Impact × Confidence × Reversibility) \u002F (Risk × Effort × BlastRadius)**\n\nDecision matrix:\n| Value | Action |\n|-------|--------|\n| `> 4` | **Apply now** (auto-write to public\u002Fprivate file) |\n| `> 1` | **Queue** in `QUEUE.jsonl` for next-run review |\n| `\u003C= 1` | Skip — log as \"skipped\" with reason |\n\nSpecial cases:\n- Any `privacy-leak` category → **apply now** regardless of score (privacy is urgent)\n- Any `outdated-rule` or `outdated-context` → **queue**, never auto-delete\n- Any `overfitting` → **queue** with proposed rewrite\n\n---\n\n## Phase 4 — Apply or Queue\n\n### Auto-apply category (score > 4, low blast-radius)\n\n| Change type | Auto-apply? |\n|-------------|-------------|\n| Additive rule (new bullet in existing section) | ✅ Yes |\n| New log entry | ✅ Yes |\n| `QUICKACCESS-INDEX.md` row addition | ✅ Yes |\n| `watcher.ignore` addition | ✅ Yes |\n| Append to private `aws.md`\u002F`auth.md`\u002Fetc | ✅ Yes |\n| New `PRIVATE-TERMS.txt` entry | ✅ Yes |\n| `QUEUE.jsonl` append | ✅ Yes |\n\n### Approval-required category (always queue with notification)\n\n| Change type | Why approval |\n|-------------|--------------|\n| Delete or rewrite any existing rule | Reversibility risk |\n| `opencode.json` structural change (plugin, mcp, provider) | Global blast radius |\n| Model\u002Fprovider switch | Cost implications |\n| New slash command | New surface area |\n| New skill or new agent file | New behaviour |\n| Any change with sensitivity=unknown | Privacy risk |\n| Any `overfitting` rewrite | Could break workflow that depends on current rule |\n\n### Diff-before-write rule\nAlways print the diff (old vs new) before writing. For private kb files, the diff is shown in the run log.\n\n### Writing a rule (with rule_id tracking)\n\nWhen writing a new rule to `rules\u002F*.md` or `kb\u002Fai-agents\u002F*.md`:\n1. Generate `rule_id` = `r` + 6 random hex chars (e.g. `r3a7f1c`)\n2. Add an HTML-comment with the rule_id at the end of the line: `\u003C!-- rule:r3a7f1c -->`\n   - Example: `- Never set temperature on extended-thinking agents \u003C!-- rule:r3a7f1c -->`\n3. Append a `created` event to `~\u002FDocuments\u002FQuickAccess\u002Fkb\u002Fai-agents\u002FRULES-INDEX.jsonl`:\n```json\n{\"ts\":\"2026-05-15T20:00:00Z\",\"rule_id\":\"r3a7f1c\",\"event\":\"created\",\"source_session_id\":\"ses_xxx\",\"file\":\"~\u002F.config\u002Fopencode\u002Frules\u002Fglobal.md\",\"line\":99,\"evidence_quote\":\"...\",\"category\":\"correction\"}\n```\n\n### Queueing a candidate\n\nAppend one line to `~\u002FDocuments\u002FQuickAccess\u002Fkb\u002Fai-agents\u002FQUEUE.jsonl`:\n```json\n{\"id\":\"q3a7f1c\",\"ts\":\"2026-05-15T20:00:00Z\",\"source_session_ids\":[\"ses_xxx\"],\"evidence_quote\":\"...\",\"category\":\"correction\",\"summary\":\"...\",\"confidence\":3,\"recurrence_count\":1,\"sensitivity\":\"private\",\"proposed_target_file\":\"~\u002FDocuments\u002FQuickAccess\u002Fkb\u002Fai-agents\u002Faws.md\",\"status\":\"pending\",\"notes\":\"score 1.8 \u003C apply threshold; recheck next run\"}\n```\n\n---\n\n## Phase 5 — Dual Log\n\nAppend TWO entries per run:\n\n### Public log: `~\u002F.config\u002Fopencode\u002FEVOLUTION_LOG.md`\n- Generic findings only\n- No company\u002Finternal names\n- No source session IDs that may correlate to private work\n- Format: short markdown summary\n\n### Private log: `~\u002FDocuments\u002FQuickAccess\u002Fkb\u002Fai-agents\u002FEVOLUTION_LOG.md`\n- Full version: all findings, sources, evidence, rule_ids, queue events\n- Includes everything from public log + the sensitive details\n\nBoth logs use this top-level structure:\n\n```markdown\n## YYYY-MM-DD — Evolution Run [v2]\n\n### Sessions Analysed\n- N sessions; date range; brief patterns\n\n### Applied (Public)\n- `rules\u002Fglobal.md` rule:r3a7f1c → \"\u003Csummary>\" (Value=4.5)\n\n### Applied (Private — kb\u002Fai-agents\u002F)  [omit from public log]\n- `kb\u002Fai-agents\u002Fauth.md` rule:r5b8d2e → \"\u003Csummary>\" (Value=6.0)\n\n### Queued\n- q3a7f1c \"\u003Csummary>\" Value=1.8 → recheck if recurrence ≥ 3\n\n### Validated rules (recurrence dropped after promotion)\n- r5b8d2e: 4 prior recurrences → 0 in last 2 weeks → marked validated\n\n### Demoted rules (no impact \u002F contradicted)\n- r9f4a1c: rule cited 0 times, symptom still recurring → demoted to QUEUE\n\n### Skipped (low value)\n- \"\u003Cfinding>\" Value=0.6 reason: blast-radius too high\n\n### Privacy regressions (Phase 0)\n- None [or: list with action taken]\n\n### Next focus\n- Watch for: ...\n```\n\n---\n\n## Phase 6 — Index + Telemetry Maintenance\n\n### 6a. RULES-INDEX feedback loop (Reflexion)\n\nFor every existing `rule_id` from previous runs:\n1. Search session transcripts for the rule's symptom (evidence quote from the `created` event)\n2. Count recurrences in sessions AFTER the `created` timestamp\n3. Search session transcripts for the rule itself being cited (the agent quoting \u002F following it)\n4. Update events:\n   - `validated` if symptom recurrence dropped to ≤1 in the last N sessions AND citations > 0\n   - `cited` if rule was followed (with session ID)\n   - `recurrence_detected` if symptom recurred despite rule existing\n   - `stale` if symptom hasn't recurred in 6+ months AND rule never cited\n   - `demoted` if recurred 3+ times despite rule (move back to QUEUE with notes)\n\n### 6b. QUICKACCESS-INDEX.md (incremental)\n\nDon't rebuild from scratch. Cache mtime+size per file in a sidecar `~\u002FDocuments\u002FQuickAccess\u002Fkb\u002Fai-agents\u002F.qa-index-cache.json` keyed by absolute path with `{mtime, size, summary}` per entry.\n\nFor each file in `~\u002FDocuments\u002FQuickAccess\u002F`:\n- If mtime+size unchanged → skip\n- If new → read first 3 lines, generate one-line summary, add row, update cache\n- If missing → mark as \"removed (verify with user)\" in index, do NOT delete entry\n\nCache example schema (one entry per file, keyed by path):\n```\n{\"\u003Cfile-path>\": {\"mtime\": \"...\", \"size\": 12345, \"summary\": \"...\"}}\n```\n\nFull rebuild monthly (record date in `QUICKACCESS-INDEX.md`).\n\n### 6c. PRIVATE-TERMS.txt maintenance\n\nIf Phase 0 caught a sensitive string that ISN'T in PRIVATE-TERMS.txt:\n\n- **Normal mode**: auto-add if the string matches an existing regex in `SENSITIVITY-REGEX.txt` (clearly sensitive); otherwise propose to user and wait for confirmation.\n- **`--dry-run` mode**: never write. Print the candidate term, the matching regex (if any), and the proposed action. Output goes to the dry-run summary at end of run, not silently dropped.\n\n---\n\n## Modes \u002F Arguments\n\n| `$ARGUMENTS` | Behaviour |\n|--------------|-----------|\n| (empty) | Full pipeline: Phase 0 → 6 |\n| `--dry-run` | Run all phases; print diffs; write nothing |\n| `--promote` | Skip Phase 1-3; review QUEUE; promote items with `recurrence_count ≥ 3` or `confidence ≥ 4` |\n| `--reject \u003Cid>` | Mark queue entry `id` as `status:rejected` |\n| `--focus=rules` | Only update rules files |\n| `--focus=agents` | Only update AGENTS.md (public + private topic files) |\n| `--focus=skills` | Only update skills |\n| `--focus=commands` | Only update commands |\n| `--focus=opencode` | Only analyse opencode.json |\n| `--focus=index` | Only run Phase 6b (incremental index) |\n| `--focus=privacy` | Only run Phase 0 |\n| `--review-queue` | List queued items + their stats; no writes |\n| `--validate-rules` | Only run Phase 6a (Reflexion loop); no new findings |\n| `--rebuild-index` | Force full QUICKACCESS-INDEX rebuild |\n| `--since=YYYY-MM-DD` | Limit Phase 1 to sessions after this date |\n| `--session=\u003Cid>` | Only analyse one session |\n\nThese ARE valid stop points. Don't continue past them.\n\n---\n\n## Safety Constraints\n\n- **Never commit** changes to git\n- **Never delete** existing rules without explicit user approval (demote\u002Fqueue instead)\n- **Never delete or rename** files under `~\u002FDocuments\u002FQuickAccess\u002F`\n- **Never modify** `opencode.json`, `opencode-mem.jsonc`, or `oh-my-openagent.json` without showing full diff\n- **Never touch** `plugin` array or `mcp` block in `opencode.json` without explicit user approval\n- **Never write company-identifying content into `~\u002F.config\u002Fopencode\u002F`** — always route private\n- **Always** read the file before editing\n- **Always** show the diff\n- **Stop and ask** on contradictions between sessions\n\n## Verbose vs structured output\n\nEnd-of-run: produce BOTH\n- Long markdown summary (for human) → appended to dual logs\n- Compact JSON manifest (for diffing\u002Fautomation) → `~\u002FDocuments\u002FQuickAccess\u002Fkb\u002Fai-agents\u002Fevolve-runs\u002F\u003Cdate>.json` with: `{run_id, ts, mode, findings, applied, queued, skipped, validated, demoted, sensitivity_counts}`\n",{"name":5,"description":7},"main","e25eb555e87aa9eeb59b520834f46fd926ad19a3","opencode\u002Fdot-config\u002Fopencode\u002Fskills\u002Fevolve","https:\u002F\u002Fgithub.com\u002Ftwidxuga\u002Fdotfiles","https:\u002F\u002Fgithub.com\u002Ftwidxuga","Software developer, data scientist, applications architect and all round computer geek.","2026-10-28 03:46:24",{"source":8,"skillName":5,"commands":38,"prompt":48,"zipAvailable":49},[39,42,45],{"tool":40,"command":41},"npx","npx skills add twidxuga\u002Fdotfiles --skill evolve",{"tool":43,"command":44},"bunx","bunx skills add twidxuga\u002Fdotfiles --skill evolve",{"tool":46,"command":47},"pnpm","pnpm dlx skills add twidxuga\u002Fdotfiles --skill evolve","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Ftwidxuga\u002Fdotfiles\u002Fblob\u002Fmain\u002Fopencode\u002Fdot-config\u002Fopencode\u002Fskills\u002Fevolve\u002FSKILL.md",true,[],[52,84,98,115,131,143],{"skillNo":53,"name":54,"nameZh":6,"description":55,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":56,"categories":57,"keywords":66,"publishedAt":25},"01M6C9Z7VKBN4HAFBDXD67K3E1","terraform-test","Comprehensive guide for writing and running Terraform tests. Use when creating test files (.tftest.hcl), writing test scenarios with run blocks, validating infrastructure behavior with assertions, mocking providers and data sources, testing module outputs and resource configurations, or troubleshooting Terraform test syntax and execution.","https:\u002F\u002Fgithub.com\u002Ftwidxuga\u002Fdotfiles\u002Fblob\u002Fmain\u002Fopencode\u002Fdot-config\u002Fopencode\u002Fskills\u002Fterraform-test\u002FSKILL.md",[58,63],{"categoryNo":59,"categoryName":60,"taxonomyType":61,"taxonomyTypeDesc":62},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":64,"categoryName":65,"taxonomyType":61,"taxonomyTypeDesc":62},"01JBSEEDCAT000000000000011","运维与部署",[67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83],"test","terraform","terraform test","testing","writing","infrastructure","run","data","ibm","Providers","execution","troubleshooting","syntax","behavior","guide","use","files",{"skillNo":85,"name":86,"nameZh":6,"description":87,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":88,"categories":89,"keywords":91,"publishedAt":25},"01M6C9Z4GWWTXCXAS8NK747K07","terraform-style-guide","Generate Terraform HCL code following HashiCorp's official style conventions and best practices. Use when writing, reviewing, or generating Terraform configurations.","https:\u002F\u002Fgithub.com\u002Ftwidxuga\u002Fdotfiles\u002Fblob\u002Fmain\u002Fopencode\u002Fdot-config\u002Fopencode\u002Fskills\u002Fterraform-style-guide\u002FSKILL.md",[90],{"categoryNo":64,"categoryName":65,"taxonomyType":61,"taxonomyTypeDesc":62},[92,81,68,93,94,95,96,71,97,82],"terraform style guide","official","generate","code","best practices","hashicorp",{"skillNo":99,"name":100,"nameZh":6,"description":101,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":102,"categories":103,"keywords":105,"publishedAt":25},"01M6C9Z1DCAC8YQQ1WS0AHBB14","terraform-stacks","Comprehensive guide for working with HashiCorp Terraform Stacks. Use when creating, modifying, or validating Terraform Stack configurations (.tfcomponent.hcl, .tfdeploy.hcl files), working with stack components and deployments from local modules, public registry, or private registry sources, managing multi-region or multi-environment infrastructure, or troubleshooting Terraform Stacks syntax and structure.","https:\u002F\u002Fgithub.com\u002Ftwidxuga\u002Fdotfiles\u002Fblob\u002Fmain\u002Fopencode\u002Fdot-config\u002Fopencode\u002Fskills\u002Fterraform-stacks\u002FSKILL.md",[104],{"categoryNo":64,"categoryName":65,"taxonomyType":61,"taxonomyTypeDesc":62},[68,106,107,83,108,109,110,111,72,112,75,97,113,78,79,114,81,82],"terraform stacks","multi-environment","deployments","public","modules","components","registry","stack","environment",{"skillNo":116,"name":117,"nameZh":6,"description":118,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":119,"categories":120,"keywords":122,"publishedAt":25},"01M6C9YYAVCNTR81V4HGZWPFW1","terraform-search-import","Discover existing cloud resources using Terraform Search queries and bulk import them into Terraform management. Use when bringing unmanaged infrastructure under Terraform control, auditing cloud resources, or migrating to IaC.","https:\u002F\u002Fgithub.com\u002Ftwidxuga\u002Fdotfiles\u002Fblob\u002Fmain\u002Fopencode\u002Fdot-config\u002Fopencode\u002Fskills\u002Fterraform-search-import\u002FSKILL.md",[121],{"categoryNo":64,"categoryName":65,"taxonomyType":61,"taxonomyTypeDesc":62},[123,124,68,82,125,72,126,75,76,127,128,129,130],"terraform search import","search","support","cloud","list","management","version","iac",{"skillNo":132,"name":133,"nameZh":6,"description":134,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":135,"licenseFileUrl":6,"sourceHtmlUrl":136,"categories":137,"keywords":139,"publishedAt":25},"01M6BZS7EAXHWK32RG213VE65G","run-acceptance-tests","Guide for running acceptance tests for a Terraform provider. Use this when asked to run an acceptance test or to run a test with the prefix `TestAcc`.","MPL-2.0","https:\u002F\u002Fgithub.com\u002Ftwidxuga\u002Fdotfiles\u002Fblob\u002Fmain\u002Fopencode\u002Fdot-config\u002Fopencode\u002Fskills\u002Fterraform-run-acceptance-tests\u002FSKILL.md",[138],{"categoryNo":64,"categoryName":65,"taxonomyType":61,"taxonomyTypeDesc":62},[140,141,73,67,68,142,75],"run acceptance tests","acceptance","terraform provider",{"skillNo":144,"name":145,"nameZh":6,"description":146,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":147,"categories":148,"keywords":156,"publishedAt":25},"01M6BZS4MJD31PY7M7654ZWQ56","refactor-module","Transform monolithic Terraform configurations into reusable, maintainable modules following HashiCorp's module design principles and community best practices.","https:\u002F\u002Fgithub.com\u002Ftwidxuga\u002Fdotfiles\u002Fblob\u002Fmain\u002Fopencode\u002Fdot-config\u002Fopencode\u002Fskills\u002Fterraform-refactor-module\u002FSKILL.md",[149,152,153],{"categoryNo":150,"categoryName":151,"taxonomyType":61,"taxonomyTypeDesc":62},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":64,"categoryName":65,"taxonomyType":61,"taxonomyTypeDesc":62},{"categoryNo":154,"categoryName":155,"taxonomyType":61,"taxonomyTypeDesc":62},"01JBSEEDCAT000000000000015","视觉设计",[157,158,96,68,75,97,159],"refactor module","refactor","design"]