[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6BZRQYAXAJ8F76XR6BESN1D":3,"skill-same:01M6BZRQYAXAJ8F76XR6BESN1D":52},{"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":26,"linkOnly":27,"markdownContent":28,"markdownBody":29,"frontMatter":30,"refName":31,"commitSha":32,"skillDirectory":33,"forksCount":14,"repositoryHtmlUrl":34,"repositoryHomepageUrl":6,"ownerHtmlUrl":35,"ownerBlogUrl":6,"ownerDescription":36,"updatedAt":37,"install":38,"resources":51},"01M6BZRQYAXAJ8F76XR6BESN1D","memmon",null,"Monitor and act on opencode memory health. Run this skill when you notice opencode feeling slow, suspect a memory leak, want a routine memory check, or are asked to check memory usage. Triggers on phrases like \"check memory\", \"memory leak\", \"opencode slow\", \"memory health\", \"how much memory is opencode using\", \"is there a leak\", \"memmon\".","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\u002Fmemmon\u002FSKILL.md",[],[5,19,20,21,22,23,24,25],"memory","monitor","run","health","how","opencode memory","check","2026-11-10 10:12:30",false,"---\nname: memmon\ndescription: Monitor and act on opencode memory health. Run this skill when you notice opencode feeling slow, suspect a memory leak, want a routine memory check, or are asked to check memory usage. Triggers on phrases like \"check memory\", \"memory leak\", \"opencode slow\", \"memory health\", \"how much memory is opencode using\", \"is there a leak\", \"memmon\".\n---\n\n# memmon — opencode memory monitor\n\nSamples and analyzes the opencode process forest for memory leaks, then acts on the verdict. This skill closes the loop: it does not just report — it takes one logged action based on what it finds.\n\n## Tool location\n\n```\n~\u002F.config\u002Fopencode\u002Ftools\u002Fmemmon\u002F\n├── sampler.sh    — take one memory snapshot\n├── analyzer.py   — classify samples as LEAK \u002F SLOW \u002F PLATEAU \u002F TRANSIENT\n├── loop.sh       — start \u002F stop \u002F status \u002F analyze the background sampler\n```\n\nRuntime data: `~\u002F.local\u002Fshare\u002Fopencode-memmon\u002F` (`samples.csv`, `loop.log`, `loop.pid`)\n\n---\n\n## Step 1 — Check sampler status\n\n```bash\nbash ~\u002F.config\u002Fopencode\u002Ftools\u002Fmemmon\u002Floop.sh status\n```\n\n- If **RUNNING**: proceed to Step 2 (data exists).\n- If **not running**: take one manual snapshot first, then proceed.\n\n```bash\nbash ~\u002F.config\u002Fopencode\u002Ftools\u002Fmemmon\u002Fsampler.sh\n```\n\n---\n\n## Step 2 — Run the analyzer\n\nAlways use `--json` for machine-readable output:\n\n```bash\npython3 ~\u002F.config\u002Fopencode\u002Ftools\u002Fmemmon\u002Fanalyzer.py \\\n  --samples ~\u002F.local\u002Fshare\u002Fopencode-memmon\u002Fsamples.csv \\\n  --summary ~\u002F.local\u002Fshare\u002Fopencode-memmon\u002Fsummary.csv \\\n  --json\n```\n\nParse the JSON. Apply the decision order in Step 3 strictly — do not infer all-clear from `has_leak:false` alone.\n\n**Before running the analyzer:** check whether opencode is currently running:\n\n```bash\npgrep -x opencode || pgrep -f \"opencode\"\n```\n\nIf no opencode PIDs exist, go directly to **STOP** — do not run the analyzer on potentially stale data.\n\n---\n\n## Step 3 — Act \u002F Ask \u002F Stop\n\n**Decision order is strict. Evaluate top-to-bottom and stop at the first matching condition.**\n\n### STOP — opencode not running\n\nIf no live opencode PIDs were found in Step 2, skip silently and log:\n\n```\nmemmon [\u003Ctimestamp>]: STOP — no opencode processes found. Skipping analysis of existing samples to avoid stale-data alerts.\n```\n\nDo not run the analyzer. Do not post Slack. Do not alert.\n\n### ASK — Ambiguous or degraded data\n\nEscalate to the human when any of these are true:\n- `samples.csv` is missing, empty, or has fewer than 3 rows\n- Analyzer exits with an unexpected error (not exit 0 or exit 2)\n- Two consecutive SLOW verdicts on the same role (check `actions.jsonl` for prior SLOW on this role)\n- LEAK on `opencode-tui` or `opencode-web` with slope > 200 MiB\u002Fhr (abnormally high — may indicate sampler noise rather than a real leak)\n\n**Action:** Surface the raw analyzer output and ask:\n\n```\nmemmon: uncertain result — [reason]. Raw output: \u003Cpaste>. Should I take any action?\n```\n\nLog to `actions.jsonl` regardless:\n```json\n{\"ts\":\"\u003CISO>\",\"verdict\":\"ASK\",\"reason\":\"\u003Creason>\",\"action\":\"asked human\"}\n```\n\n### ACT — LEAK detected\n\nCondition: `has_leak:true` OR any role verdict is `\"LEAK\"` in the JSON.\n\n**Action — two steps, both required:**\n\n1. Attempt Slack DM to `@ricardo.santos` via `mcp_hub_slack__conversations_add_message`:\n\n```\n*memmon LEAK detected* — \u003Ctimestamp>\n\nRole: \u003Crole>\nWorst PID: \u003Cworst_pid>\nSlope: \u003Cworst_slope> MiB\u002Fhr\n\nRecommended action: restart opencode or investigate \u003Crole> process.\nLoop status: \u003Crunning\u002Fstopped>\n```\n\n2. Check the Slack tool response. If it returns an error or no `ts` field, do **not** claim success. Log `slack_sent: false, error: \u003Cerror>` and escalate to ASK.\n\n3. Log to `actions.jsonl`:\n```json\n{\"ts\":\"\u003CISO>\",\"verdict\":\"LEAK\",\"role\":\"\u003Crole>\",\"slope_mb_hr\":\u003Cn>,\"pid\":\"\u003Cpid>\",\"slack_sent\":\u003Ctrue|false>,\"action\":\"dm sent or escalated\"}\n```\n\n**Undo step:** The Slack DM cannot be unsent once delivered, but can be deleted. No process is killed, no file is modified. If sent in error, delete it via Slack and log the correction.\n\n### ACT — SLOW drift\n\nCondition: no LEAK, but any role verdict is `\"SLOW\"`.\n\n**Action:** Log a watch entry only — no Slack.\n\n```json\n{\"ts\":\"\u003CISO>\",\"verdict\":\"SLOW\",\"role\":\"\u003Crole>\",\"slope_mb_hr\":\u003Cn>,\"pid\":\"\u003Cpid>\",\"action\":\"logged watch entry\"}\n```\n\nAlso write a brief inline session note:\n```\nmemmon [\u003Ctimestamp>]: SLOW drift on \u003Crole> (\u003Cworst_slope> MiB\u002Fhr, pid \u003Cworst_pid>). Monitoring — no action required yet.\n```\n\nIf the prior `actions.jsonl` entry for this role was also SLOW → escalate to ASK instead.\n\n### ACT — PLATEAU \u002F TRANSIENT (all roles)\n\nCondition: every role is `\"PLATEAU\"` or `\"TRANSIENT\"` and `has_leak:false`.\n\n**Action:** Log all-clear only.\n\n```json\n{\"ts\":\"\u003CISO>\",\"verdict\":\"PLATEAU\",\"roles_checked\":\u003Cn>,\"samples\":\u003Cn>,\"action\":\"all clear\"}\n```\n\nBrief inline note:\n```\nmemmon [\u003Ctimestamp>]: all clear — no leak detected. Roles: \u003Clist>. Samples: \u003Cn>.\n```\n\n---\n\n## Step 4 — Durable audit log\n\n**Every run appends one JSONL line to:**\n\n```\n~\u002F.local\u002Fshare\u002Fopencode-memmon\u002Factions.jsonl\n```\n\n```bash\necho '{\"ts\":\"\u003CISO>\",\"verdict\":\"\u003CV>\",\"action\":\"\u003Ca>\"}' >> ~\u002F.local\u002Fshare\u002Fopencode-memmon\u002Factions.jsonl\n```\n\nThis file is the real audit trail. The inline session note is a convenience mirror only — ephemeral and not the source of truth.\n\n**To check for consecutive SLOW on a role before acting:**\n\n```bash\ntail -5 ~\u002F.local\u002Fshare\u002Fopencode-memmon\u002Factions.jsonl | grep '\"verdict\":\"SLOW\"' | grep '\"role\":\"\u003Crole>\"'\n```\n\nIf the previous entry for that role was also SLOW → escalate to ASK.\n\n---\n\n## Worked example\n\n```\n$ python3 analyzer.py --json\n{\n  \"has_leak\": false,\n  \"roles\": {\n    \"opencode-tui\": {\"verdict\": \"PLATEAU\", \"worst_slope_mb_hr\": 1.2, ...},\n    \"mcphub\":       {\"verdict\": \"SLOW\",    \"worst_slope_mb_hr\": 8.4, ...}\n  }\n}\n```\n\n→ **SLOW on mcphub**: log watch entry, no Slack. If mcphub shows SLOW next run too → ASK.\n\n---\n\n## Thresholds (env overrides)\n\n| Env var               | Default | Meaning                        |\n| --------------------- | ------- | ------------------------------ |\n| `MEMMON_LEAK_MB_HR`   | 60      | MiB\u002Fhr slope → LEAK            |\n| `MEMMON_SLOW_MB_HR`   | 6       | MiB\u002Fhr slope → SLOW            |\n| `MEMMON_MIN_SAMPLES`  | 3       | Minimum samples to classify    |\n| `MEMMON_MIN_LEAK_SAMPLES` | 8   | Minimum samples to call LEAK   |\n| `MEMMON_WINDOW`       | 3       | Window-min smoothing width     |\n","# memmon — opencode memory monitor\n\nSamples and analyzes the opencode process forest for memory leaks, then acts on the verdict. This skill closes the loop: it does not just report — it takes one logged action based on what it finds.\n\n## Tool location\n\n```\n~\u002F.config\u002Fopencode\u002Ftools\u002Fmemmon\u002F\n├── sampler.sh    — take one memory snapshot\n├── analyzer.py   — classify samples as LEAK \u002F SLOW \u002F PLATEAU \u002F TRANSIENT\n├── loop.sh       — start \u002F stop \u002F status \u002F analyze the background sampler\n```\n\nRuntime data: `~\u002F.local\u002Fshare\u002Fopencode-memmon\u002F` (`samples.csv`, `loop.log`, `loop.pid`)\n\n---\n\n## Step 1 — Check sampler status\n\n```bash\nbash ~\u002F.config\u002Fopencode\u002Ftools\u002Fmemmon\u002Floop.sh status\n```\n\n- If **RUNNING**: proceed to Step 2 (data exists).\n- If **not running**: take one manual snapshot first, then proceed.\n\n```bash\nbash ~\u002F.config\u002Fopencode\u002Ftools\u002Fmemmon\u002Fsampler.sh\n```\n\n---\n\n## Step 2 — Run the analyzer\n\nAlways use `--json` for machine-readable output:\n\n```bash\npython3 ~\u002F.config\u002Fopencode\u002Ftools\u002Fmemmon\u002Fanalyzer.py \\\n  --samples ~\u002F.local\u002Fshare\u002Fopencode-memmon\u002Fsamples.csv \\\n  --summary ~\u002F.local\u002Fshare\u002Fopencode-memmon\u002Fsummary.csv \\\n  --json\n```\n\nParse the JSON. Apply the decision order in Step 3 strictly — do not infer all-clear from `has_leak:false` alone.\n\n**Before running the analyzer:** check whether opencode is currently running:\n\n```bash\npgrep -x opencode || pgrep -f \"opencode\"\n```\n\nIf no opencode PIDs exist, go directly to **STOP** — do not run the analyzer on potentially stale data.\n\n---\n\n## Step 3 — Act \u002F Ask \u002F Stop\n\n**Decision order is strict. Evaluate top-to-bottom and stop at the first matching condition.**\n\n### STOP — opencode not running\n\nIf no live opencode PIDs were found in Step 2, skip silently and log:\n\n```\nmemmon [\u003Ctimestamp>]: STOP — no opencode processes found. Skipping analysis of existing samples to avoid stale-data alerts.\n```\n\nDo not run the analyzer. Do not post Slack. Do not alert.\n\n### ASK — Ambiguous or degraded data\n\nEscalate to the human when any of these are true:\n- `samples.csv` is missing, empty, or has fewer than 3 rows\n- Analyzer exits with an unexpected error (not exit 0 or exit 2)\n- Two consecutive SLOW verdicts on the same role (check `actions.jsonl` for prior SLOW on this role)\n- LEAK on `opencode-tui` or `opencode-web` with slope > 200 MiB\u002Fhr (abnormally high — may indicate sampler noise rather than a real leak)\n\n**Action:** Surface the raw analyzer output and ask:\n\n```\nmemmon: uncertain result — [reason]. Raw output: \u003Cpaste>. Should I take any action?\n```\n\nLog to `actions.jsonl` regardless:\n```json\n{\"ts\":\"\u003CISO>\",\"verdict\":\"ASK\",\"reason\":\"\u003Creason>\",\"action\":\"asked human\"}\n```\n\n### ACT — LEAK detected\n\nCondition: `has_leak:true` OR any role verdict is `\"LEAK\"` in the JSON.\n\n**Action — two steps, both required:**\n\n1. Attempt Slack DM to `@ricardo.santos` via `mcp_hub_slack__conversations_add_message`:\n\n```\n*memmon LEAK detected* — \u003Ctimestamp>\n\nRole: \u003Crole>\nWorst PID: \u003Cworst_pid>\nSlope: \u003Cworst_slope> MiB\u002Fhr\n\nRecommended action: restart opencode or investigate \u003Crole> process.\nLoop status: \u003Crunning\u002Fstopped>\n```\n\n2. Check the Slack tool response. If it returns an error or no `ts` field, do **not** claim success. Log `slack_sent: false, error: \u003Cerror>` and escalate to ASK.\n\n3. Log to `actions.jsonl`:\n```json\n{\"ts\":\"\u003CISO>\",\"verdict\":\"LEAK\",\"role\":\"\u003Crole>\",\"slope_mb_hr\":\u003Cn>,\"pid\":\"\u003Cpid>\",\"slack_sent\":\u003Ctrue|false>,\"action\":\"dm sent or escalated\"}\n```\n\n**Undo step:** The Slack DM cannot be unsent once delivered, but can be deleted. No process is killed, no file is modified. If sent in error, delete it via Slack and log the correction.\n\n### ACT — SLOW drift\n\nCondition: no LEAK, but any role verdict is `\"SLOW\"`.\n\n**Action:** Log a watch entry only — no Slack.\n\n```json\n{\"ts\":\"\u003CISO>\",\"verdict\":\"SLOW\",\"role\":\"\u003Crole>\",\"slope_mb_hr\":\u003Cn>,\"pid\":\"\u003Cpid>\",\"action\":\"logged watch entry\"}\n```\n\nAlso write a brief inline session note:\n```\nmemmon [\u003Ctimestamp>]: SLOW drift on \u003Crole> (\u003Cworst_slope> MiB\u002Fhr, pid \u003Cworst_pid>). Monitoring — no action required yet.\n```\n\nIf the prior `actions.jsonl` entry for this role was also SLOW → escalate to ASK instead.\n\n### ACT — PLATEAU \u002F TRANSIENT (all roles)\n\nCondition: every role is `\"PLATEAU\"` or `\"TRANSIENT\"` and `has_leak:false`.\n\n**Action:** Log all-clear only.\n\n```json\n{\"ts\":\"\u003CISO>\",\"verdict\":\"PLATEAU\",\"roles_checked\":\u003Cn>,\"samples\":\u003Cn>,\"action\":\"all clear\"}\n```\n\nBrief inline note:\n```\nmemmon [\u003Ctimestamp>]: all clear — no leak detected. Roles: \u003Clist>. Samples: \u003Cn>.\n```\n\n---\n\n## Step 4 — Durable audit log\n\n**Every run appends one JSONL line to:**\n\n```\n~\u002F.local\u002Fshare\u002Fopencode-memmon\u002Factions.jsonl\n```\n\n```bash\necho '{\"ts\":\"\u003CISO>\",\"verdict\":\"\u003CV>\",\"action\":\"\u003Ca>\"}' >> ~\u002F.local\u002Fshare\u002Fopencode-memmon\u002Factions.jsonl\n```\n\nThis file is the real audit trail. The inline session note is a convenience mirror only — ephemeral and not the source of truth.\n\n**To check for consecutive SLOW on a role before acting:**\n\n```bash\ntail -5 ~\u002F.local\u002Fshare\u002Fopencode-memmon\u002Factions.jsonl | grep '\"verdict\":\"SLOW\"' | grep '\"role\":\"\u003Crole>\"'\n```\n\nIf the previous entry for that role was also SLOW → escalate to ASK.\n\n---\n\n## Worked example\n\n```\n$ python3 analyzer.py --json\n{\n  \"has_leak\": false,\n  \"roles\": {\n    \"opencode-tui\": {\"verdict\": \"PLATEAU\", \"worst_slope_mb_hr\": 1.2, ...},\n    \"mcphub\":       {\"verdict\": \"SLOW\",    \"worst_slope_mb_hr\": 8.4, ...}\n  }\n}\n```\n\n→ **SLOW on mcphub**: log watch entry, no Slack. If mcphub shows SLOW next run too → ASK.\n\n---\n\n## Thresholds (env overrides)\n\n| Env var               | Default | Meaning                        |\n| --------------------- | ------- | ------------------------------ |\n| `MEMMON_LEAK_MB_HR`   | 60      | MiB\u002Fhr slope → LEAK            |\n| `MEMMON_SLOW_MB_HR`   | 6       | MiB\u002Fhr slope → SLOW            |\n| `MEMMON_MIN_SAMPLES`  | 3       | Minimum samples to classify    |\n| `MEMMON_MIN_LEAK_SAMPLES` | 8   | Minimum samples to call LEAK   |\n| `MEMMON_WINDOW`       | 3       | Window-min smoothing width     |\n",{"name":5,"description":7},"main","e25eb555e87aa9eeb59b520834f46fd926ad19a3","opencode\u002Fdot-config\u002Fopencode\u002Fskills\u002Fmemmon","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":39,"prompt":49,"zipAvailable":50},[40,43,46],{"tool":41,"command":42},"npx","npx skills add twidxuga\u002Fdotfiles --skill memmon",{"tool":44,"command":45},"bunx","bunx skills add twidxuga\u002Fdotfiles --skill memmon",{"tool":47,"command":48},"pnpm","pnpm dlx skills add twidxuga\u002Fdotfiles --skill memmon","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Ftwidxuga\u002Fdotfiles\u002Fblob\u002Fmain\u002Fopencode\u002Fdot-config\u002Fopencode\u002Fskills\u002Fmemmon\u002FSKILL.md",true,[],[53,84,98,115,131,143],{"skillNo":54,"name":55,"nameZh":6,"description":56,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":57,"categories":58,"keywords":67,"publishedAt":26},"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",[59,64],{"categoryNo":60,"categoryName":61,"taxonomyType":62,"taxonomyTypeDesc":63},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":65,"categoryName":66,"taxonomyType":62,"taxonomyTypeDesc":63},"01JBSEEDCAT000000000000011","运维与部署",[68,69,70,71,72,73,21,74,75,76,77,78,79,80,81,82,83],"test","terraform","terraform test","testing","writing","infrastructure","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":26},"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":65,"categoryName":66,"taxonomyType":62,"taxonomyTypeDesc":63},[92,81,69,93,94,95,96,72,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":26},"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":65,"categoryName":66,"taxonomyType":62,"taxonomyTypeDesc":63},[69,106,107,83,108,109,110,111,73,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":26},"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":65,"categoryName":66,"taxonomyType":62,"taxonomyTypeDesc":63},[123,124,69,82,125,73,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":26},"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":65,"categoryName":66,"taxonomyType":62,"taxonomyTypeDesc":63},[140,141,21,68,69,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":26},"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":62,"taxonomyTypeDesc":63},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":65,"categoryName":66,"taxonomyType":62,"taxonomyTypeDesc":63},{"categoryNo":154,"categoryName":155,"taxonomyType":62,"taxonomyTypeDesc":63},"01JBSEEDCAT000000000000015","视觉设计",[157,158,96,69,75,97,159],"refactor module","refactor","design"]