[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C2JPZF2GRNQKDVCEWN6XNG":3,"skill-same:01M6C2JPZF2GRNQKDVCEWN6XNG":70},{"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":28,"publishedAt":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":46,"commitSha":47,"skillDirectory":48,"forksCount":49,"repositoryHtmlUrl":50,"repositoryHomepageUrl":51,"ownerHtmlUrl":52,"ownerBlogUrl":53,"ownerDescription":54,"updatedAt":55,"install":56,"resources":69},"01M6C2JPZF2GRNQKDVCEWN6XNG","setup-run",null,"Execute a `setup.aiwg.io\u002Fv1` SetupManifest, performing cross-platform installati","jmagly\u002Faiwg","jmagly","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1159087?v=4","01M6C10AK8N2WCSQN11FYGTJWN","Joseph Magly","01M6C10AQ8A2RMED1Y1BSVY7NF",229,"MIT","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fplugins\u002Fagentic-installer\u002Fskills\u002Fsetup-run\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[29,30,31,32,33,34,35,36,37],"setup","run","setup run","execute","cross-platform","platform","io","v1","performing","2026-11-10 10:12:30",false,"---\nnamespace: aiwg\nname: setup-run\nplatforms: [all]\ndescription: \"Execute a `setup.aiwg.io\u002Fv1` SetupManifest, performing cross-platform installati\"\n---\n\n# setup-run\n\nExecute a `setup.aiwg.io\u002Fv1` SetupManifest, performing cross-platform installation step by step.\n\nThis skill executes deterministic manifests. If\n`metadata.execution_mode: provider-orchestrated`, validate the manifest and\nhand it to the current supported AI provider; do not begin deterministic CLI\nexecution.\n\nFor AIWG's public installer, keep the provider in control of bootstrap and\nrepair. Once the CLI is healthy, use `aiwg setup --scope project --providers\n\u003Cprovider>` for the interview, `aiwg setup --review` for a read-only preview,\nand `aiwg setup --apply` after approval. These guided commands operate on a\nsaved plan, not a SetupManifest. Headless interview uses the same answer flags\nwith `--non-interactive`; headless apply requires `--yes`. See the\n[guided setup reference](https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fdocs\u002Fgetting-started\u002Fguided-setup.md).\n\n## Trigger Phrases\n\n- \"run the setup manifest\"\n- \"install using setup.manifest.yaml\"\n- \"execute installer for [project]\"\n- \"aiwg setup-run [manifest]\"\n- \"run setup for [project]\"\n- \"run dev setup for [project]\"\n\n## Parameters\n\n### manifest (positional, optional)\nPath to the `setup.manifest.yaml`. Default: `.\u002Fsetup.manifest.yaml`.\n\n### --dry-run (optional)\nPrint what would be executed without running any scripts.\n\n### --platform (optional)\nOverride platform detection: `linux`, `macos`, `windows`, `wsl2`.\n\n### --distro (optional)\nOverride distro detection: `ubuntu`, `debian`, `fedora`, `arch`, etc.\n\n### --params-file (optional)\nPath to a YAML file with pre-set param values (avoids interactive prompts).\n\n### --step (optional)\nRun only a specific step by `id`. Useful for resuming after failure.\n\n### --skip (optional)\nComma-separated step IDs to skip.\n\n### --type (optional)\nFilter which manifest to run by install type: `user`, `developer`, or `ci`.\n\nWhen `--type developer` is specified and no manifest path is given, the skill looks for `installer\u002Fsetup.dev.manifest.yaml` before falling back to `setup.manifest.yaml`.\nWhen `--type user` is specified, the skill looks for `installer\u002Fsetup.user.manifest.yaml`.\n\n## Execution Flow\n\n### Phase 1: Load and Validate\n\n1. Read the manifest file\n2. Validate against `setup.aiwg.io\u002Fv1` schema (run setup-validate internally)\n3. If invalid, report errors and stop — do not attempt partial execution\n\n### Phase 2: Platform Detection\n\n1. Detect OS: `uname -s` (Linux\u002FDarwin) or `$PSVersionTable` (Windows)\n2. Detect distro: `\u002Fetc\u002Fos-release` → `ID` field\n3. Detect arch: `uname -m`\n4. Detect shell: `$SHELL` or `$0`\n5. Match against manifest `platform` block — if no match, warn and ask to proceed or abort\n\n### Phase 3: Param Collection\n\nFor each param in manifest `params`:\n1. Check if already set in environment or `--params-file`\n2. If `required: true` and no value: prompt interactively\n3. If `interactive_required: true`: always prompt interactively, even if a default exists — do not use the default without asking\n4. If `choices` list present: validate input against choices\n5. Expand `~` and `$HOME` in `type: path` params\n\n### Phase 4: Prerequisite Check\n\nFor each prerequisite:\n1. Run `detect` command\n2. If `version_min` set: compare version output against minimum\n3. On failure: print `install_hint` and stop with non-zero exit\n\n### Phase 5: OS Config Summary (developer manifests only)\n\nWhen `metadata.install_type` is `developer` and the manifest has an `os_config` block:\n\n1. Run each `os_config` entry's `check` command\n2. Collect entries where `check` returns non-zero (needs configuration)\n3. Print a summary of OS mutations that will be made:\n   ```\n   [setup] OS Configuration Required\n\n   The following OS-level changes will be made:\n     • docker-group: Add user 'alice' to docker group (requires re-login)\n     • inotify-watches: Set fs.inotify.max_user_watches=524288\n\n   These changes require elevated privileges (sudo).\n   ```\n4. Ask for explicit user confirmation before proceeding with any `os-config` steps:\n   ```\n   Proceed with OS configuration? [y\u002FN]:\n   ```\n5. If denied, skip all `os-config` steps and warn that the environment may be incomplete.\n\nNever apply OS mutations without this explicit confirmation. This is a separate gate from the normal params phase.\n\n### Phase 6: Step Execution\n\nExecute steps in dependency order:\n\n```\nFor each step (respecting depends_on order):\n  1. Evaluate `when` condition — skip step if false\n  2. Skip steps not applicable to current platform\n  3. Dispatch by step type:\n     - script:         run the script with params as env vars\n     - detect:         run detect command, set env var with result\n     - ask:            prompt user, set param\n     - verify:         run verify expression; fail if false\n     - agentic:        delegate to installer-agent with instruction\n     - platform-route: resolve platform → script path, run script\n     - chain:          run aiwg setup-run on sub-manifest\n     - os-config:      run the referenced os_config entry (see below)\n  4. Run `verify` expression if present\n  5. On failure:\n     a. Check recovery_procedures for a matching trigger\n     b. If found: show recovery plan and ask user to confirm before running\n     c. If not found or recovery fails: report step ID + error, stop\n```\n\n#### os-config Step Execution\n\nWhen executing an `os-config` step:\n\n1. Look up the `config_id` in the manifest's `os_config` block\n2. Run the `check` command — if exit 0, print \"already configured\" and skip\n3. If the entry has `interactive: true`:\n   - Print an explanation of what the `apply` command will do\n   - Warn: \"This step will trigger an interactive dialog or GUI prompt.\"\n   - Ask for user acknowledgment before running:\n     ```\n     [setup] Interactive step: xcode-cli-tools\n     This will trigger the Xcode Command Line Tools installation dialog.\n     Acknowledge and continue? [y\u002FN]:\n     ```\n4. Run the `apply` command\n5. If the entry has `requires_relogin: true`:\n   - After the step completes, pause and print:\n     ```\n     [setup] NOTICE: docker-group requires re-login to take effect.\n     Log out and back in, then re-run setup-run with --step \u003Cnext-step-id>\n     to continue from where you left off.\n\n     Continue (if you have already re-logged in)? [y\u002FN]:\n     ```\n\n### Phase 7: Completion Report\n\n```\n[setup] Installation complete\n\n  Steps run:    4\u002F4\n  Steps skipped: 0\n  Duration:     45s\n\n  Installed to: \u002Fopt\u002Fmyapp\n  Config dir:   ~\u002F.config\u002Fmyapp\n\nRun `myapp --version` to verify.\n```\n\nFor developer installs, also report:\n```\n[setup] Developer environment ready\n\n  OS config applied: docker-group, inotify-watches\n  Re-login required: docker-group (log out and back in)\n  Dev server:   http:\u002F\u002Fmyapp.local:3000\n```\n\n## Dry Run Output\n\n```\n[setup:dry-run] Would execute: setup.manifest.yaml\n  Platform: linux\u002Fubuntu\u002Fx86_64\n  Install type: developer\n\n  OS Config (2 entries, 1 needs configuration):\n    ✓ docker-group: already configured\n    ✗ inotify-watches: needs configuration (current: 8192, required: 524288)\n\n  Step 1: clone (script)\n    script: installer\u002Fscripts\u002Fclone.sh\n    env:    INSTALL_DIR=\u002Fopt\u002Fmyapp BRANCH=main\n    verify: test -d ${INSTALL_DIR}\u002F.git\n\n  Step 2: apply-inotify (os-config)\n    config_id: inotify-watches\n    platform:  linux\n\n  Step 3: configure-dev (script)\n    script: installer\u002Fscripts\u002Fdev\u002Fconfigure-dev.sh\n\n  Step 4: verify-dev (script)\n    script: installer\u002Fscripts\u002Fdev\u002Fverify-dev.sh\n```\n\n## Recovery Handling\n\nWhen a step fails and a recovery procedure matches:\n\n```\n[setup] Step 'clone' failed:\n  Error: destination path already exists and is not empty\n\nRecovery procedure 'full-reset' is available:\n  This will: remove \u002Fopt\u002Fmyapp and re-clone from git\n\nProceed with recovery? [y\u002FN]: _\n```\n\nNever run destructive recovery steps without explicit user confirmation.\n\n## Agentic Steps\n\nWhen a step has `type: agentic`, the skill delegates to `installer-agent` with the step's `instruction` field as context, plus:\n- The full manifest (for environment context)\n- The current param values\n- The failure output from any preceding script attempt\n\nThe installer-agent must explain what it detects and what it will do before making changes.\n\n## References\n\n- Schema: `${CLAUDE_PLUGIN_ROOT}\u002Fschemas\u002Fv1\u002Fsetup-manifest.schema.json`\n- Agent: `${CLAUDE_PLUGIN_ROOT}\u002Fagents\u002Finstaller-agent.md`\n- Script lib: `${CLAUDE_PLUGIN_ROOT}\u002Fscripts\u002Flib\u002F`\n- Generate skill: `${CLAUDE_PLUGIN_ROOT}\u002Fskills\u002Fsetup-generate\u002FSKILL.md`\n","# setup-run\n\nExecute a `setup.aiwg.io\u002Fv1` SetupManifest, performing cross-platform installation step by step.\n\nThis skill executes deterministic manifests. If\n`metadata.execution_mode: provider-orchestrated`, validate the manifest and\nhand it to the current supported AI provider; do not begin deterministic CLI\nexecution.\n\nFor AIWG's public installer, keep the provider in control of bootstrap and\nrepair. Once the CLI is healthy, use `aiwg setup --scope project --providers\n\u003Cprovider>` for the interview, `aiwg setup --review` for a read-only preview,\nand `aiwg setup --apply` after approval. These guided commands operate on a\nsaved plan, not a SetupManifest. Headless interview uses the same answer flags\nwith `--non-interactive`; headless apply requires `--yes`. See the\n[guided setup reference](https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fdocs\u002Fgetting-started\u002Fguided-setup.md).\n\n## Trigger Phrases\n\n- \"run the setup manifest\"\n- \"install using setup.manifest.yaml\"\n- \"execute installer for [project]\"\n- \"aiwg setup-run [manifest]\"\n- \"run setup for [project]\"\n- \"run dev setup for [project]\"\n\n## Parameters\n\n### manifest (positional, optional)\nPath to the `setup.manifest.yaml`. Default: `.\u002Fsetup.manifest.yaml`.\n\n### --dry-run (optional)\nPrint what would be executed without running any scripts.\n\n### --platform (optional)\nOverride platform detection: `linux`, `macos`, `windows`, `wsl2`.\n\n### --distro (optional)\nOverride distro detection: `ubuntu`, `debian`, `fedora`, `arch`, etc.\n\n### --params-file (optional)\nPath to a YAML file with pre-set param values (avoids interactive prompts).\n\n### --step (optional)\nRun only a specific step by `id`. Useful for resuming after failure.\n\n### --skip (optional)\nComma-separated step IDs to skip.\n\n### --type (optional)\nFilter which manifest to run by install type: `user`, `developer`, or `ci`.\n\nWhen `--type developer` is specified and no manifest path is given, the skill looks for `installer\u002Fsetup.dev.manifest.yaml` before falling back to `setup.manifest.yaml`.\nWhen `--type user` is specified, the skill looks for `installer\u002Fsetup.user.manifest.yaml`.\n\n## Execution Flow\n\n### Phase 1: Load and Validate\n\n1. Read the manifest file\n2. Validate against `setup.aiwg.io\u002Fv1` schema (run setup-validate internally)\n3. If invalid, report errors and stop — do not attempt partial execution\n\n### Phase 2: Platform Detection\n\n1. Detect OS: `uname -s` (Linux\u002FDarwin) or `$PSVersionTable` (Windows)\n2. Detect distro: `\u002Fetc\u002Fos-release` → `ID` field\n3. Detect arch: `uname -m`\n4. Detect shell: `$SHELL` or `$0`\n5. Match against manifest `platform` block — if no match, warn and ask to proceed or abort\n\n### Phase 3: Param Collection\n\nFor each param in manifest `params`:\n1. Check if already set in environment or `--params-file`\n2. If `required: true` and no value: prompt interactively\n3. If `interactive_required: true`: always prompt interactively, even if a default exists — do not use the default without asking\n4. If `choices` list present: validate input against choices\n5. Expand `~` and `$HOME` in `type: path` params\n\n### Phase 4: Prerequisite Check\n\nFor each prerequisite:\n1. Run `detect` command\n2. If `version_min` set: compare version output against minimum\n3. On failure: print `install_hint` and stop with non-zero exit\n\n### Phase 5: OS Config Summary (developer manifests only)\n\nWhen `metadata.install_type` is `developer` and the manifest has an `os_config` block:\n\n1. Run each `os_config` entry's `check` command\n2. Collect entries where `check` returns non-zero (needs configuration)\n3. Print a summary of OS mutations that will be made:\n   ```\n   [setup] OS Configuration Required\n\n   The following OS-level changes will be made:\n     • docker-group: Add user 'alice' to docker group (requires re-login)\n     • inotify-watches: Set fs.inotify.max_user_watches=524288\n\n   These changes require elevated privileges (sudo).\n   ```\n4. Ask for explicit user confirmation before proceeding with any `os-config` steps:\n   ```\n   Proceed with OS configuration? [y\u002FN]:\n   ```\n5. If denied, skip all `os-config` steps and warn that the environment may be incomplete.\n\nNever apply OS mutations without this explicit confirmation. This is a separate gate from the normal params phase.\n\n### Phase 6: Step Execution\n\nExecute steps in dependency order:\n\n```\nFor each step (respecting depends_on order):\n  1. Evaluate `when` condition — skip step if false\n  2. Skip steps not applicable to current platform\n  3. Dispatch by step type:\n     - script:         run the script with params as env vars\n     - detect:         run detect command, set env var with result\n     - ask:            prompt user, set param\n     - verify:         run verify expression; fail if false\n     - agentic:        delegate to installer-agent with instruction\n     - platform-route: resolve platform → script path, run script\n     - chain:          run aiwg setup-run on sub-manifest\n     - os-config:      run the referenced os_config entry (see below)\n  4. Run `verify` expression if present\n  5. On failure:\n     a. Check recovery_procedures for a matching trigger\n     b. If found: show recovery plan and ask user to confirm before running\n     c. If not found or recovery fails: report step ID + error, stop\n```\n\n#### os-config Step Execution\n\nWhen executing an `os-config` step:\n\n1. Look up the `config_id` in the manifest's `os_config` block\n2. Run the `check` command — if exit 0, print \"already configured\" and skip\n3. If the entry has `interactive: true`:\n   - Print an explanation of what the `apply` command will do\n   - Warn: \"This step will trigger an interactive dialog or GUI prompt.\"\n   - Ask for user acknowledgment before running:\n     ```\n     [setup] Interactive step: xcode-cli-tools\n     This will trigger the Xcode Command Line Tools installation dialog.\n     Acknowledge and continue? [y\u002FN]:\n     ```\n4. Run the `apply` command\n5. If the entry has `requires_relogin: true`:\n   - After the step completes, pause and print:\n     ```\n     [setup] NOTICE: docker-group requires re-login to take effect.\n     Log out and back in, then re-run setup-run with --step \u003Cnext-step-id>\n     to continue from where you left off.\n\n     Continue (if you have already re-logged in)? [y\u002FN]:\n     ```\n\n### Phase 7: Completion Report\n\n```\n[setup] Installation complete\n\n  Steps run:    4\u002F4\n  Steps skipped: 0\n  Duration:     45s\n\n  Installed to: \u002Fopt\u002Fmyapp\n  Config dir:   ~\u002F.config\u002Fmyapp\n\nRun `myapp --version` to verify.\n```\n\nFor developer installs, also report:\n```\n[setup] Developer environment ready\n\n  OS config applied: docker-group, inotify-watches\n  Re-login required: docker-group (log out and back in)\n  Dev server:   http:\u002F\u002Fmyapp.local:3000\n```\n\n## Dry Run Output\n\n```\n[setup:dry-run] Would execute: setup.manifest.yaml\n  Platform: linux\u002Fubuntu\u002Fx86_64\n  Install type: developer\n\n  OS Config (2 entries, 1 needs configuration):\n    ✓ docker-group: already configured\n    ✗ inotify-watches: needs configuration (current: 8192, required: 524288)\n\n  Step 1: clone (script)\n    script: installer\u002Fscripts\u002Fclone.sh\n    env:    INSTALL_DIR=\u002Fopt\u002Fmyapp BRANCH=main\n    verify: test -d ${INSTALL_DIR}\u002F.git\n\n  Step 2: apply-inotify (os-config)\n    config_id: inotify-watches\n    platform:  linux\n\n  Step 3: configure-dev (script)\n    script: installer\u002Fscripts\u002Fdev\u002Fconfigure-dev.sh\n\n  Step 4: verify-dev (script)\n    script: installer\u002Fscripts\u002Fdev\u002Fverify-dev.sh\n```\n\n## Recovery Handling\n\nWhen a step fails and a recovery procedure matches:\n\n```\n[setup] Step 'clone' failed:\n  Error: destination path already exists and is not empty\n\nRecovery procedure 'full-reset' is available:\n  This will: remove \u002Fopt\u002Fmyapp and re-clone from git\n\nProceed with recovery? [y\u002FN]: _\n```\n\nNever run destructive recovery steps without explicit user confirmation.\n\n## Agentic Steps\n\nWhen a step has `type: agentic`, the skill delegates to `installer-agent` with the step's `instruction` field as context, plus:\n- The full manifest (for environment context)\n- The current param values\n- The failure output from any preceding script attempt\n\nThe installer-agent must explain what it detects and what it will do before making changes.\n\n## References\n\n- Schema: `${CLAUDE_PLUGIN_ROOT}\u002Fschemas\u002Fv1\u002Fsetup-manifest.schema.json`\n- Agent: `${CLAUDE_PLUGIN_ROOT}\u002Fagents\u002Finstaller-agent.md`\n- Script lib: `${CLAUDE_PLUGIN_ROOT}\u002Fscripts\u002Flib\u002F`\n- Generate skill: `${CLAUDE_PLUGIN_ROOT}\u002Fskills\u002Fsetup-generate\u002FSKILL.md`\n",{"name":5,"namespace":43,"platforms":44,"description":7},"aiwg",[45],"all","main","6754967c344ccb087a8de06972f55a41067b291b","agentic\u002Fcode\u002Fplugins\u002Fagentic-installer\u002Fskills\u002Fsetup-run",36,"https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg","https:\u002F\u002Faiwg.io","https:\u002F\u002Fgithub.com\u002Fjmagly","https:\u002F\u002Fintegrolabs.io","ml\u002Fai, industrial automation, safety\u002Fsecurity, ssi\r\n\r\nmagly.net\r\nintegrolabs.io\r\naiwg.io\r\nfortemi.com\r\npagenary.com\r\nbytecask.com","2026-11-14 10:46:34",{"source":8,"skillName":5,"commands":57,"prompt":67,"zipAvailable":68},[58,61,64],{"tool":59,"command":60},"npx","npx skills add jmagly\u002Faiwg --skill setup-run",{"tool":62,"command":63},"bunx","bunx skills add jmagly\u002Faiwg --skill setup-run",{"tool":65,"command":66},"pnpm","pnpm dlx skills add jmagly\u002Faiwg --skill setup-run","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fplugins\u002Fagentic-installer\u002Fskills\u002Fsetup-run\u002FSKILL.md",true,[],[71,99,123,129,136,150],{"skillNo":72,"name":73,"nameZh":6,"description":74,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":75,"categories":76,"keywords":78,"publishedAt":38},"01M70QA0BSYJ49EES9V4RE8QH1","host-hardening","Read-only system hardening baseline and plan-first host hardening recommendations for SSH, Docker bind addresses, firewall persistence, datastores, exporters and audit retention.","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fplugins\u002Fsecurity-engineering\u002Fskills\u002Fhost-hardening\u002FSKILL.md",[77],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98],"host","host hardening","hardening","read","re","recommendations","remediation","plan","port","verification","Bash","access","only","retention","audit","never","firewall","bind","secrets","request",{"skillNo":100,"name":101,"nameZh":6,"description":102,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":103,"categories":104,"keywords":109,"publishedAt":38},"01M70PNT2Z4HMZPRBTAF6073NN","exposure-analysis","Read-only firewall analysis and effective host exposure reconstruction for Docker published ports, UFW bypass, stale rules, CDN scope, IPv6 asymmetry and external probe allowlists.","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fplugins\u002Fforensics\u002Fskills\u002Fexposure-analysis\u002FSKILL.md",[105,108],{"categoryNo":106,"categoryName":107,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[110,111,112,82,113,87,114,115,89,116,79,117,91,118,119,94,95,120,121,122],"exposure analysis","analysis","unknown","credentials","collection","ufw","ports","internet","local","scope","reconstruction","operator","write",{"skillNo":124,"name":73,"nameZh":6,"description":74,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":125,"categories":126,"keywords":128,"publishedAt":38},"01M70P8QATMPKA78E4FT5D2TNA","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fframeworks\u002Fsecurity-engineering\u002Fskills\u002Fhost-hardening\u002FSKILL.md",[127],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[81,79,80,90,82,98,85,84,93,86,87,88,89,97,91,92,83,94,95,96],{"skillNo":130,"name":101,"nameZh":6,"description":102,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":131,"categories":132,"keywords":135,"publishedAt":38},"01M70NMPVJ5H0JH131P60FW4R8","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fframeworks\u002Fforensics-complete\u002Fskills\u002Fexposure-analysis\u002FSKILL.md",[133,134],{"categoryNo":106,"categoryName":107,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[111,110,94,113,87,114,89,112,79,117,91,118,119,82,95,116,115,120,121,122],{"skillNo":137,"name":138,"nameZh":6,"description":139,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":140,"categories":141,"keywords":143,"publishedAt":38},"01M6CB4DDR0B4NNCFK7ZK7449H","fixture-skill","Exercise rule delivery.","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Ftest\u002Ffixtures\u002Frule-delivery\u002Fskills\u002Ffixture-skill\u002FSKILL.md",[142],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[144,145,146,147,148,149],"fixture skill","fixture","rule","delivery","true","exercise",{"skillNo":151,"name":152,"nameZh":6,"description":153,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":154,"categories":155,"keywords":157,"publishedAt":38},"01M6CB4AVK1W76MFMPP0JP32CJ","pi-local","Pi-local duplicate-precedence fixture.","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Ftest\u002Ffixtures\u002Fproviders\u002Fpi\u002Fproject\u002F.pi\u002Fskills\u002Fpi-local\u002FSKILL.md",[156],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[158,159,118,160,145],"pi","pi local","duplicate"]