[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7DTPDRC5ABY2B2CVDCE8GP5":3,"skill-same:01M7DTPDRC5ABY2B2CVDCE8GP5":57},{"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":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":24,"commitSha":25,"skillDirectory":26,"forksCount":27,"repositoryHtmlUrl":28,"repositoryHomepageUrl":29,"ownerHtmlUrl":30,"ownerBlogUrl":6,"ownerDescription":31,"updatedAt":32,"install":33,"resources":46},"01M7DTPDRC5ABY2B2CVDCE8GP5","mk-confluence-bulk",null,"Bulk Confluence ops (10+ pages): bulk-label\u002Fmove\u002Fdelete via confluence-as; dry-run mandatory. NOT single-page (mk:confluence-page) or comments\u002Fattachments (mk:confluence-collaborate).","ngocsangyem\u002FMeowKit","ngocsangyem","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F33769536?v=4","01M6J3FSMJAG9PVQEGRT7AQ9J2","Sang Nguyen","01M6J3FSRTJG0MNP6NV71639RM",16,"MIT","https:\u002F\u002Fgithub.com\u002Fngocsangyem\u002FMeowKit\u002Fblob\u002Fmain\u002Fkit\u002Fbundles\u002Fcodex\u002Froot\u002F.agents\u002Fskills\u002Fmk-confluence-bulk\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: \"mk-confluence-bulk\"\ndescription: \"Bulk Confluence ops (10+ pages): bulk-label\u002Fmove\u002Fdelete via confluence-as; dry-run mandatory. NOT single-page (mk:confluence-page) or comments\u002Fattachments (mk:confluence-collaborate).\"\n---\n\n# mk:confluence-bulk\n\nForks to the `confluence-bulk` agent. The agent enforces a hard 3-step ceremony at runtime — dry-run → confirm → execute.\n\n## Dry-Run Workflow (MANDATORY)\n\n```\nStep 1: invocation + --dry-run\nStep 2: agent shows would_* JSON keys + impacted-count + first 5 affected page titles\nStep 3: explicit user \"yes\" + typed confirmation token (e.g. \"DELETE 47 PAGES\")\n        → re-invoke without --dry-run\n```\n\nSkipping Step 1 is a hard violation. The agent will refuse if asked to skip.\n\n## Triggers\n\n- \"bulk update N pages\"\n- \"mass label\"\n- \"delete every page matching CQL\"\n- \"bulk-move pages from SPACE-A to SPACE-B\"\n- \"bulk-label every page in space ENG with 'archive'\"\n\n## See also\n\n- Agent: `..\u002F..\u002Fagents\u002Fconfluence-bulk.md`\n- Shared: `..\u002Fconfluence\u002Freferences\u002F{install-and-auth,cli-idioms,safety-framework}.md` (Tier 4 enforcement lives in safety-framework.md)\n- Domain refs:\n  - `references\u002Fsafety-checklist.md` — pre-flight checklist for any bulk operation\n  - `references\u002Fdry-run-protocol.md` — the 3-step ceremony in detail with example transcripts\n- Peer leaves: `mk:confluence-search` (CQL author + read-side overlap; same sanitizer), `mk:confluence-page` (single-page ops), `mk:confluence-collaborate` (comments \u002F attachments at single-page scope)\n\n## Gotchas\n\n- Default `--max-pages` cap is 100. Higher values require explicit override + extra confirmation. `confluence-as` may impose its own server-side limit (~200 typical).\n- `bulk delete` is **soft-delete to trash** — restore requires going through the Confluence UI manually. There is no `--restore-from-trash` op verified in v1.\n- Bulk ops are NOT transactional. Partial-failure (rate limit \u002F per-page permission error) leaves the partial-progress count visible; remediation is re-run with `id NOT IN (\u003Ccompleted>)`.\n- `bulk restore` is intentionally absent from v1 — confluence-as does not expose it as a single subcommand. v2 may add it via per-page orchestration.\n- Grow this list as new edge cases surface.","# mk:confluence-bulk\n\nForks to the `confluence-bulk` agent. The agent enforces a hard 3-step ceremony at runtime — dry-run → confirm → execute.\n\n## Dry-Run Workflow (MANDATORY)\n\n```\nStep 1: invocation + --dry-run\nStep 2: agent shows would_* JSON keys + impacted-count + first 5 affected page titles\nStep 3: explicit user \"yes\" + typed confirmation token (e.g. \"DELETE 47 PAGES\")\n        → re-invoke without --dry-run\n```\n\nSkipping Step 1 is a hard violation. The agent will refuse if asked to skip.\n\n## Triggers\n\n- \"bulk update N pages\"\n- \"mass label\"\n- \"delete every page matching CQL\"\n- \"bulk-move pages from SPACE-A to SPACE-B\"\n- \"bulk-label every page in space ENG with 'archive'\"\n\n## See also\n\n- Agent: `..\u002F..\u002Fagents\u002Fconfluence-bulk.md`\n- Shared: `..\u002Fconfluence\u002Freferences\u002F{install-and-auth,cli-idioms,safety-framework}.md` (Tier 4 enforcement lives in safety-framework.md)\n- Domain refs:\n  - `references\u002Fsafety-checklist.md` — pre-flight checklist for any bulk operation\n  - `references\u002Fdry-run-protocol.md` — the 3-step ceremony in detail with example transcripts\n- Peer leaves: `mk:confluence-search` (CQL author + read-side overlap; same sanitizer), `mk:confluence-page` (single-page ops), `mk:confluence-collaborate` (comments \u002F attachments at single-page scope)\n\n## Gotchas\n\n- Default `--max-pages` cap is 100. Higher values require explicit override + extra confirmation. `confluence-as` may impose its own server-side limit (~200 typical).\n- `bulk delete` is **soft-delete to trash** — restore requires going through the Confluence UI manually. There is no `--restore-from-trash` op verified in v1.\n- Bulk ops are NOT transactional. Partial-failure (rate limit \u002F per-page permission error) leaves the partial-progress count visible; remediation is re-run with `id NOT IN (\u003Ccompleted>)`.\n- `bulk restore` is intentionally absent from v1 — confluence-as does not expose it as a single subcommand. v2 may add it via per-page orchestration.\n- Grow this list as new edge cases surface.",{"name":5,"description":7},"main","c7ff0a9e672de2c0590b03f6459385c2d7a63c1a","kit\u002Fbundles\u002Fcodex\u002Froot\u002F.agents\u002Fskills\u002Fmk-confluence-bulk",3,"https:\u002F\u002Fgithub.com\u002Fngocsangyem\u002FMeowKit","https:\u002F\u002Fdocs.meowkit.dev\u002F","https:\u002F\u002Fgithub.com\u002Fngocsangyem","Keep moving forward","2026-11-15 03:54:21",{"source":8,"skillName":5,"commands":34,"prompt":44,"zipAvailable":45},[35,38,41],{"tool":36,"command":37},"npx","npx skills add ngocsangyem\u002FMeowKit --skill mk-confluence-bulk",{"tool":39,"command":40},"bunx","bunx skills add ngocsangyem\u002FMeowKit --skill mk-confluence-bulk",{"tool":42,"command":43},"pnpm","pnpm dlx skills add ngocsangyem\u002FMeowKit --skill mk-confluence-bulk","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fngocsangyem\u002FMeowKit\u002Fblob\u002Fmain\u002Fkit\u002Fbundles\u002Fcodex\u002Froot\u002F.agents\u002Fskills\u002Fmk-confluence-bulk\u002FSKILL.md",true,[47,53],{"path":48,"resourceType":49,"resourceTypeDesc":50,"sizeBytes":51,"sourceHtmlUrl":52},"references\u002Fdry-run-protocol.md","REFERENCE","参考文档",4398,"https:\u002F\u002Fgithub.com\u002Fngocsangyem\u002FMeowKit\u002Fblob\u002Fmain\u002Fkit\u002Fbundles\u002Fcodex\u002Froot\u002F.agents\u002Fskills\u002Fmk-confluence-bulk\u002Freferences\u002Fdry-run-protocol.md",{"path":54,"resourceType":49,"resourceTypeDesc":50,"sizeBytes":55,"sourceHtmlUrl":56},"references\u002Fsafety-checklist.md",2378,"https:\u002F\u002Fgithub.com\u002Fngocsangyem\u002FMeowKit\u002Fblob\u002Fmain\u002Fkit\u002Fbundles\u002Fcodex\u002Froot\u002F.agents\u002Fskills\u002Fmk-confluence-bulk\u002Freferences\u002Fsafety-checklist.md",[58,65,72,79,86,93],{"skillNo":59,"name":60,"nameZh":6,"description":61,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":62,"categories":63,"keywords":64,"publishedAt":19},"01M7DVHF481B4J41T4855KGM50","mk-worktree","Manages git worktrees for parallel agent isolation: creates parallel\u002F{name}-{timestamp} branches, merges with conflict detection. NOT for user feature branches (use git worktree directly).","https:\u002F\u002Fgithub.com\u002Fngocsangyem\u002FMeowKit\u002Fblob\u002Fmain\u002Fkit\u002Fbundles\u002Fcursor\u002Froot\u002F.cursor\u002Fskills\u002Fmk-worktree\u002FSKILL.md",[],[],{"skillNo":66,"name":67,"nameZh":6,"description":68,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":69,"categories":70,"keywords":71,"publishedAt":19},"01M7DVHAWVKDKPB1EA3F1NC4JC","mk-workflow-orchestrator","Auto-invoked 7-phase workflow for complex-feature intent; fasttrack mode for pre-approved specs. NOT for explicit single tasks (mk:cook), green-field builds (mk:autobuild), or simple fixes (mk:fix).","https:\u002F\u002Fgithub.com\u002Fngocsangyem\u002FMeowKit\u002Fblob\u002Fmain\u002Fkit\u002Fbundles\u002Fcursor\u002Froot\u002F.cursor\u002Fskills\u002Fmk-workflow-orchestrator\u002FSKILL.md",[],[],{"skillNo":73,"name":74,"nameZh":6,"description":75,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":78,"publishedAt":19},"01M7DVH6SYBHWW00TRZXCC56JW","mk-web-to-markdown","Fetch a URL and return clean markdown, for arbitrary external pages (blog, RFC, GitHub issue, vendor doc) not covered by mk:docs-finder. Static-only by default; opt-in JS rendering available.","https:\u002F\u002Fgithub.com\u002Fngocsangyem\u002FMeowKit\u002Fblob\u002Fmain\u002Fkit\u002Fbundles\u002Fcursor\u002Froot\u002F.cursor\u002Fskills\u002Fmk-web-to-markdown\u002FSKILL.md",[],[],{"skillNo":80,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":85,"publishedAt":19},"01M7DVH3HGW47BX3PEF30JV6EJ","mk-vulnerability-scanner","Vulnerability analysis: OWASP Top 10, current threat landscape, supply chain security, attack surface mapping, risk prioritization. Use for security audits. NOT for STRIDE\u002FCSO infra audits (mk:cso).","https:\u002F\u002Fgithub.com\u002Fngocsangyem\u002FMeowKit\u002Fblob\u002Fmain\u002Fkit\u002Fbundles\u002Fcursor\u002Froot\u002F.cursor\u002Fskills\u002Fmk-vulnerability-scanner\u002FSKILL.md",[],[],{"skillNo":87,"name":88,"nameZh":6,"description":89,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":90,"categories":91,"keywords":92,"publishedAt":19},"01M7DVGZBKMB9WDFH9MFMA99FV","mk-vue","Vue 3 authoring\u002Freview: components, composables, reactivity, Pinia, Pinia Colada, file routing, forms. Composition API + script setup. Auto-activates on .vue files. Deep review: mk:vue-best-practices.","https:\u002F\u002Fgithub.com\u002Fngocsangyem\u002FMeowKit\u002Fblob\u002Fmain\u002Fkit\u002Fbundles\u002Fcursor\u002Froot\u002F.cursor\u002Fskills\u002Fmk-vue\u002FSKILL.md",[],[],{"skillNo":94,"name":95,"nameZh":6,"description":96,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":97,"categories":98,"keywords":99,"publishedAt":19},"01M7DVGSE12AA1M7599HB8HRCT","mk-vue-testing-best-practices","Vue 3 testing best-practices review: Vitest + Vue Test Utils for components, composables, Pinia, Router, async\u002FSuspense, forms, a11y, plus Playwright E2E strategy. Advisory only.","https:\u002F\u002Fgithub.com\u002Fngocsangyem\u002FMeowKit\u002Fblob\u002Fmain\u002Fkit\u002Fbundles\u002Fcursor\u002Froot\u002F.cursor\u002Fskills\u002Fmk-vue-testing-best-practices\u002FSKILL.md",[],[]]