[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6GXQTF52D5JNW62NTGZX579":3,"skill-same:01M6GXQTF52D5JNW62NTGZX579":86},{"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":23,"publishedAt":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":54,"commitSha":55,"skillDirectory":56,"forksCount":57,"repositoryHtmlUrl":58,"repositoryHomepageUrl":59,"ownerHtmlUrl":60,"ownerBlogUrl":59,"ownerDescription":61,"updatedAt":62,"install":63,"resources":75},"01M6GXQTF52D5JNW62NTGZX579","schedule",null,"Manages recurring and one-off scheduled tasks. Session-scoped scheduling via CronCreate\u002FCronDelete\u002FCronList. Documents the cloud path for tasks that need to survive machine sleep or network drops.","SethGammon\u002FCitadel","SethGammon","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F5523585?v=4","01M6GXJ90FD2CE9QF5GQERWN06","Seth Gammon","01M6GXJ94VXYGK5KAW14EYE901",931,"MIT","https:\u002F\u002Fgithub.com\u002FSethGammon\u002FCitadel\u002Fblob\u002Fmain\u002Fskills\u002Fschedule\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[5,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"scheduling","path","scheduled","true","reminder","minutes","sleep","machine","via","false","documents","session","recurring","cron","SET","network","cloud","run","tasks","2026-11-10 10:12:30",false,"---\nname: schedule\nlicense: MIT\ndescription: >-\n  Manages recurring and one-off scheduled tasks. Session-scoped scheduling via\n  CronCreate\u002FCronDelete\u002FCronList. Documents the cloud path for tasks that need\n  to survive machine sleep or network drops.\nuser-invocable: true\nauto-trigger: false\ntrigger_keywords:\n  - schedule\n  - recurring\n  - every N minutes\n  - cron\n  - set a reminder\n  - run periodically\nlast-updated: 2026-03-26\n---\n\n# \u002Fschedule — Task Scheduling\n\n## Orientation\n\n**Use when:** scheduling a recurring or one-off remote agent run (cron-style, outside the current session).\n**Don't use when:** repeating work within the current session (use \u002Floop); continuous unattended campaigns (use \u002Fdaemon).\n\n## Default execution path (READ FIRST)\n\n**`\u002Fschedule add` does NOT call `CronCreate` by default.** It shells out to\n`node scripts\u002Flocal-schedule.js` which installs a native OS entry (Windows\nTask Scheduler or Unix cron). Only pass `--remote` to use Anthropic's routine\nsystem, and only after explicit user confirmation.\n\n**Why:** `CronCreate` counts against the account-wide **15 routine runs \u002F 24h**\ncap; every fire of the scheduled task counts. See\n[docs\u002FROUTINE-QUOTA.md](..\u002F..\u002Fdocs\u002FROUTINE-QUOTA.md).\n\n### Default flow — `\u002Fschedule add \"\u003Cexpr>\" \"\u003Ccommand>\"` (no `--remote`)\nRun:\n```bash\nnode scripts\u002Flocal-schedule.js add \"\u003Cexpr>\" \"\u003Ccommand>\" --confirm\n```\nBefore running, show the cadence, project, prompt and persistence and obtain\napproval to create the OS task. Normal Claude permissions remain enabled. Do not\nadd a bypass flag to make unattended execution succeed.\n\nThen report the returned ID and the removal command. This survives session\nend, machine reboot, and consumes zero routine quota. Use\n`\u002Fschedule list` and `\u002Fschedule remove {id}` (which also shell out to\n`local-schedule.js`) by default. Remove tasks before uninstalling. New jobs require\ntheir `.citadel\u002Fschedules\u002F\u003Cid>.json` record; deleting it disables execution but leaves\nan inert OS entry. Existing jobs retain their old bypass flags until explicitly\nremoved and recreated. See [runner safety and migration](..\u002F..\u002Fdocs\u002FISSUE-278-SECURITY.md).\n\n### Codex automation lane\n\nWhen running in Codex and the user wants the schedule to survive the current terminal session, create a Codex Automation plan instead of a local OS entry:\n\n```bash\nnode scripts\u002Fcodex-automation.js plan --type schedule --cadence \"\u003Cexpr>\" --command \"\u003Ccommand>\" --write\n```\n\nGive the returned `prompt` to the Codex app automation surface and keep the generated `.planning\u002Fcodex-automations\u002F{id}.json` as the durable Citadel record.\n\nIf `.planning\u002F` does not exist, create it before writing automation state.\n\n### Opt-in routine flow — `\u002Fschedule add --remote ...`\nOnly when `--remote` is explicitly passed:\n1. Confirm: \"This will use `CronCreate`, which counts against your 15 routine\n   runs \u002F 24h quota and is cleared at session end. Continue? (y\u002FN)\"\n2. On confirmation, run the `CronCreate`-based flow documented below.\n\nThe rest of the protocol documents the full `CronCreate` flow for reference\nand for `--remote` invocations.\n\n## When to Route Here\n\n- \"run pr-watch every hour\"\n- \"check my PRs automatically\"\n- \"schedule a thing\"\n- \"remind me to run tests every 30 minutes\"\n- \"set up a recurring task\"\n- \"list my scheduled tasks\"\n- \"cancel the PR check\"\n- Any mention of \"schedule\", \"recurring\", \"every N minutes\u002Fhours\", \"cron\"\n\n## Protocol\n\n### \u002Fschedule list\n\nList all currently scheduled tasks using CronList.\n\nOutput format:\n```\nActive schedules (N):\n  [id] {description} — {cron expression} — next run: {time}\n\nNo schedules active.\n```\n\nIf CronList is not available: output a helpful error (see Fringe Cases).\n\n---\n\n### \u002Fschedule add \"{description}\" {\u002Fskill-or-command}\n\nCreate a recurring task.\n\nSteps:\n1. Parse the user's description to extract:\n   - Natural language interval: \"every 30 minutes\", \"hourly\", \"every day at 9am\"\n   - The skill or command to run: `\u002Fpr-watch`, `\u002Fdo status`, etc.\n2. Convert natural language to a cron expression (see Conversion Table below)\n3. Confirm with user: \"I'll run `{command}` {natural-language-interval} (cron: `{expression}`). OK?\"\n4. If confirmed: call CronCreate with the expression and command\n5. Output: \"Scheduled. ID: {id}. Use `\u002Fschedule remove {id}` to cancel.\"\n\n**Cron Expression Conversion Table:**\n\n| Natural Language | Cron Expression |\n|---|---|\n| every minute | `* * * * *` |\n| every 5 minutes | `*\u002F5 * * * *` |\n| every 15 minutes | `*\u002F15 * * * *` |\n| every 30 minutes | `*\u002F30 * * * *` |\n| every hour \u002F hourly | `0 * * * *` |\n| every 2 hours | `0 *\u002F2 * * *` |\n| every 6 hours | `0 *\u002F6 * * *` |\n| every day \u002F daily | `0 9 * * *` (default 9am) |\n| every day at {H}am\u002Fpm | `0 {H} * * *` |\n| every weekday | `0 9 * * 1-5` |\n| every Monday | `0 9 * * 1` |\n\nIf the user provides a raw cron expression directly, use it as-is without\nconverting. Validate it has 5 fields before accepting.\n\n---\n\n### \u002Fschedule remove {id}\n\nRemove a scheduled task by ID using CronDelete.\n\nIf the user doesn't know the ID: run `\u002Fschedule list` first, show the list,\nand ask which one to remove.\n\nOutput: \"Removed schedule {id} ({description}).\"\n\n---\n\n### \u002Fschedule status\n\nShow all active schedules and their next run times. Equivalent to `\u002Fschedule list`\nwith additional context about what each task does and when it last ran (if available).\n\n---\n\n## Session-Scoped vs. Cloud-Persistent Scheduling\n\n### Session-Scoped (CronCreate)\n\nCronCreate schedules tasks that run during the **current Claude Code session only**.\nWhen the session ends (Claude Code closes or the conversation is reset), all\nsession-scoped schedules are cleared.\n\n**Use session-scoped when:**\n- Running checks during an active work session (\"remind me every 30min to commit\")\n- Polling for PR feedback while you're at the computer\n- Triggering skill runs during a long coding session\n\n### Cloud-Persistent (RemoteTrigger)\n\nFor tasks that need to survive machine sleep, network drops, or session restarts,\nuse **RemoteTrigger** — a one-off cloud trigger that fires from Anthropic's\ninfrastructure rather than your local session.\n\n**Use cloud-persistent when:**\n- The task needs to run overnight or while you're away\n- You want notifications when you return to your machine\n- The interval spans multiple days or calendar dates\n\n**How to set up a one-off cloud trigger:**\n1. Call RemoteTrigger with the desired delay and the command to run\n2. Claude Code registers the trigger in Anthropic's cloud scheduler\n3. When the trigger fires, it wakes a new Claude Code session and runs the command\n4. Results are delivered as a notification\n\n**Note:** RemoteTrigger requires Claude Code with cloud features enabled (Pro or\nTeam plan). CronCreate works on all plans but is session-scoped only.\n\n---\n\n## Fringe Cases\n\n**CronCreate not available:** Output error; suggest OS cron\u002FTask Scheduler. Never fail silently.\n**Ambiguous interval:** Ask for clarification before proceeding.\n**Raw cron expression:** Accept without conversion; validate 5 fields.\n**Every-minute schedule:** Warn about 60 fires\u002Fhour; suggest 5m or 15m instead.\n**No schedules when listing:** \"No active schedules. Use `\u002Fschedule add` to create one.\"\n**Pause requested:** Explain pause isn't supported; remove and recreate instead.\n\n---\n\n## Contextual Gates\n\n**Disclosure:** \"Creating schedule: `{command}` at `{cron expression}`. OK?\"\n**Reversibility:** amber — creates OS cron entries or CronCreate sessions (side effects outside the repo); undo with `\u002Fschedule remove {id}`\n**Trust gates:**\n- Any: confirms before creating; shows cron expression before accepting\n\n## Quality Gates\n\n- Always confirm before creating (CronCreate is a side effect)\n- Always show the cron expression alongside the natural-language description\n- Always provide the ID after creation so the user can remove it\n- Never leave a user unable to remove a schedule they created\n\n## Exit Protocol\n\n\u002Fschedule does not produce a HANDOFF block. After each action, output a concise\nconfirmation or list and wait for the next command.\n\n- After `add`: \"Scheduled. ID: {id}. Use `\u002Fschedule remove {id}` to cancel.\"\n- After `remove`: \"Removed schedule {id}.\"\n- After `list` or `status`: the active schedule list (or \"No active schedules.\")\n- After any error: a clear message and actionable suggestion.\n","# \u002Fschedule — Task Scheduling\n\n## Orientation\n\n**Use when:** scheduling a recurring or one-off remote agent run (cron-style, outside the current session).\n**Don't use when:** repeating work within the current session (use \u002Floop); continuous unattended campaigns (use \u002Fdaemon).\n\n## Default execution path (READ FIRST)\n\n**`\u002Fschedule add` does NOT call `CronCreate` by default.** It shells out to\n`node scripts\u002Flocal-schedule.js` which installs a native OS entry (Windows\nTask Scheduler or Unix cron). Only pass `--remote` to use Anthropic's routine\nsystem, and only after explicit user confirmation.\n\n**Why:** `CronCreate` counts against the account-wide **15 routine runs \u002F 24h**\ncap; every fire of the scheduled task counts. See\n[docs\u002FROUTINE-QUOTA.md](..\u002F..\u002Fdocs\u002FROUTINE-QUOTA.md).\n\n### Default flow — `\u002Fschedule add \"\u003Cexpr>\" \"\u003Ccommand>\"` (no `--remote`)\nRun:\n```bash\nnode scripts\u002Flocal-schedule.js add \"\u003Cexpr>\" \"\u003Ccommand>\" --confirm\n```\nBefore running, show the cadence, project, prompt and persistence and obtain\napproval to create the OS task. Normal Claude permissions remain enabled. Do not\nadd a bypass flag to make unattended execution succeed.\n\nThen report the returned ID and the removal command. This survives session\nend, machine reboot, and consumes zero routine quota. Use\n`\u002Fschedule list` and `\u002Fschedule remove {id}` (which also shell out to\n`local-schedule.js`) by default. Remove tasks before uninstalling. New jobs require\ntheir `.citadel\u002Fschedules\u002F\u003Cid>.json` record; deleting it disables execution but leaves\nan inert OS entry. Existing jobs retain their old bypass flags until explicitly\nremoved and recreated. See [runner safety and migration](..\u002F..\u002Fdocs\u002FISSUE-278-SECURITY.md).\n\n### Codex automation lane\n\nWhen running in Codex and the user wants the schedule to survive the current terminal session, create a Codex Automation plan instead of a local OS entry:\n\n```bash\nnode scripts\u002Fcodex-automation.js plan --type schedule --cadence \"\u003Cexpr>\" --command \"\u003Ccommand>\" --write\n```\n\nGive the returned `prompt` to the Codex app automation surface and keep the generated `.planning\u002Fcodex-automations\u002F{id}.json` as the durable Citadel record.\n\nIf `.planning\u002F` does not exist, create it before writing automation state.\n\n### Opt-in routine flow — `\u002Fschedule add --remote ...`\nOnly when `--remote` is explicitly passed:\n1. Confirm: \"This will use `CronCreate`, which counts against your 15 routine\n   runs \u002F 24h quota and is cleared at session end. Continue? (y\u002FN)\"\n2. On confirmation, run the `CronCreate`-based flow documented below.\n\nThe rest of the protocol documents the full `CronCreate` flow for reference\nand for `--remote` invocations.\n\n## When to Route Here\n\n- \"run pr-watch every hour\"\n- \"check my PRs automatically\"\n- \"schedule a thing\"\n- \"remind me to run tests every 30 minutes\"\n- \"set up a recurring task\"\n- \"list my scheduled tasks\"\n- \"cancel the PR check\"\n- Any mention of \"schedule\", \"recurring\", \"every N minutes\u002Fhours\", \"cron\"\n\n## Protocol\n\n### \u002Fschedule list\n\nList all currently scheduled tasks using CronList.\n\nOutput format:\n```\nActive schedules (N):\n  [id] {description} — {cron expression} — next run: {time}\n\nNo schedules active.\n```\n\nIf CronList is not available: output a helpful error (see Fringe Cases).\n\n---\n\n### \u002Fschedule add \"{description}\" {\u002Fskill-or-command}\n\nCreate a recurring task.\n\nSteps:\n1. Parse the user's description to extract:\n   - Natural language interval: \"every 30 minutes\", \"hourly\", \"every day at 9am\"\n   - The skill or command to run: `\u002Fpr-watch`, `\u002Fdo status`, etc.\n2. Convert natural language to a cron expression (see Conversion Table below)\n3. Confirm with user: \"I'll run `{command}` {natural-language-interval} (cron: `{expression}`). OK?\"\n4. If confirmed: call CronCreate with the expression and command\n5. Output: \"Scheduled. ID: {id}. Use `\u002Fschedule remove {id}` to cancel.\"\n\n**Cron Expression Conversion Table:**\n\n| Natural Language | Cron Expression |\n|---|---|\n| every minute | `* * * * *` |\n| every 5 minutes | `*\u002F5 * * * *` |\n| every 15 minutes | `*\u002F15 * * * *` |\n| every 30 minutes | `*\u002F30 * * * *` |\n| every hour \u002F hourly | `0 * * * *` |\n| every 2 hours | `0 *\u002F2 * * *` |\n| every 6 hours | `0 *\u002F6 * * *` |\n| every day \u002F daily | `0 9 * * *` (default 9am) |\n| every day at {H}am\u002Fpm | `0 {H} * * *` |\n| every weekday | `0 9 * * 1-5` |\n| every Monday | `0 9 * * 1` |\n\nIf the user provides a raw cron expression directly, use it as-is without\nconverting. Validate it has 5 fields before accepting.\n\n---\n\n### \u002Fschedule remove {id}\n\nRemove a scheduled task by ID using CronDelete.\n\nIf the user doesn't know the ID: run `\u002Fschedule list` first, show the list,\nand ask which one to remove.\n\nOutput: \"Removed schedule {id} ({description}).\"\n\n---\n\n### \u002Fschedule status\n\nShow all active schedules and their next run times. Equivalent to `\u002Fschedule list`\nwith additional context about what each task does and when it last ran (if available).\n\n---\n\n## Session-Scoped vs. Cloud-Persistent Scheduling\n\n### Session-Scoped (CronCreate)\n\nCronCreate schedules tasks that run during the **current Claude Code session only**.\nWhen the session ends (Claude Code closes or the conversation is reset), all\nsession-scoped schedules are cleared.\n\n**Use session-scoped when:**\n- Running checks during an active work session (\"remind me every 30min to commit\")\n- Polling for PR feedback while you're at the computer\n- Triggering skill runs during a long coding session\n\n### Cloud-Persistent (RemoteTrigger)\n\nFor tasks that need to survive machine sleep, network drops, or session restarts,\nuse **RemoteTrigger** — a one-off cloud trigger that fires from Anthropic's\ninfrastructure rather than your local session.\n\n**Use cloud-persistent when:**\n- The task needs to run overnight or while you're away\n- You want notifications when you return to your machine\n- The interval spans multiple days or calendar dates\n\n**How to set up a one-off cloud trigger:**\n1. Call RemoteTrigger with the desired delay and the command to run\n2. Claude Code registers the trigger in Anthropic's cloud scheduler\n3. When the trigger fires, it wakes a new Claude Code session and runs the command\n4. Results are delivered as a notification\n\n**Note:** RemoteTrigger requires Claude Code with cloud features enabled (Pro or\nTeam plan). CronCreate works on all plans but is session-scoped only.\n\n---\n\n## Fringe Cases\n\n**CronCreate not available:** Output error; suggest OS cron\u002FTask Scheduler. Never fail silently.\n**Ambiguous interval:** Ask for clarification before proceeding.\n**Raw cron expression:** Accept without conversion; validate 5 fields.\n**Every-minute schedule:** Warn about 60 fires\u002Fhour; suggest 5m or 15m instead.\n**No schedules when listing:** \"No active schedules. Use `\u002Fschedule add` to create one.\"\n**Pause requested:** Explain pause isn't supported; remove and recreate instead.\n\n---\n\n## Contextual Gates\n\n**Disclosure:** \"Creating schedule: `{command}` at `{cron expression}`. OK?\"\n**Reversibility:** amber — creates OS cron entries or CronCreate sessions (side effects outside the repo); undo with `\u002Fschedule remove {id}`\n**Trust gates:**\n- Any: confirms before creating; shows cron expression before accepting\n\n## Quality Gates\n\n- Always confirm before creating (CronCreate is a side effect)\n- Always show the cron expression alongside the natural-language description\n- Always provide the ID after creation so the user can remove it\n- Never leave a user unable to remove a schedule they created\n\n## Exit Protocol\n\n\u002Fschedule does not produce a HANDOFF block. After each action, output a concise\nconfirmation or list and wait for the next command.\n\n- After `add`: \"Scheduled. ID: {id}. Use `\u002Fschedule remove {id}` to cancel.\"\n- After `remove`: \"Removed schedule {id}.\"\n- After `list` or `status`: the active schedule list (or \"No active schedules.\")\n- After any error: a clear message and actionable suggestion.\n",{"name":5,"license":15,"description":7,"auto-trigger":44,"last-updated":48,"user-invocable":49,"trigger_keywords":50},1774483200000,true,[5,36,51,37,52,53],"every N minutes","set a reminder","run periodically","main","e1a3d45697a0f323aaedcbea0ab6a0387b5fe722","skills\u002Fschedule",84,"https:\u002F\u002Fgithub.com\u002FSethGammon\u002FCitadel","https:\u002F\u002Fsethgammon.github.io\u002FCitadel\u002F","https:\u002F\u002Fgithub.com\u002FSethGammon","Building Citadel, the repo-local operating layer for Claude Code and Codex. Persistent work, routing, verification, and coordinated agent fleets.","2026-11-13 02:05:13",{"source":8,"skillName":5,"commands":64,"prompt":74,"zipAvailable":49},[65,68,71],{"tool":66,"command":67},"npx","npx skills add SethGammon\u002FCitadel --skill schedule",{"tool":69,"command":70},"bunx","bunx skills add SethGammon\u002FCitadel --skill schedule",{"tool":72,"command":73},"pnpm","pnpm dlx skills add SethGammon\u002FCitadel --skill schedule","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FSethGammon\u002FCitadel\u002Fblob\u002Fmain\u002Fskills\u002Fschedule\u002FSKILL.md",[76,82],{"path":77,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":80,"sourceHtmlUrl":81},"__benchmarks__\u002Flist-empty.md","REFERENCE","参考文档",716,"https:\u002F\u002Fgithub.com\u002FSethGammon\u002FCitadel\u002Fblob\u002Fmain\u002Fskills\u002Fschedule\u002F__benchmarks__\u002Flist-empty.md",{"path":83,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":84,"sourceHtmlUrl":85},"__benchmarks__\u002Fnatural-language-interval.md",1099,"https:\u002F\u002Fgithub.com\u002FSethGammon\u002FCitadel\u002Fblob\u002Fmain\u002Fskills\u002Fschedule\u002F__benchmarks__\u002Fnatural-language-interval.md",[87,112,139,162,187,206],{"skillNo":88,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":93,"publishedAt":43},"01M6GXSBKE9A2HQWF8QRAZ4WJ5","workspace","Multi-repo campaign coordinator. Same lifecycle as fleet -- scope claims, discovery relay, wave-based execution -- but the unit of work is a repo, not a file. Coordinates campaigns across repositories with shared context.","https:\u002F\u002Fgithub.com\u002FSethGammon\u002FCitadel\u002Fblob\u002Fmain\u002Fskills\u002Fworkspace\u002FSKILL.md",[],[89,94,95,96,97,98,99,100,101,102,103,104,105,33,106,107,108,109,110,111],"repos","snowflake","multi-repo","work","context","campaign","coordinate","but","across","campaigns","shared","as","scope","add","unit","coordinator","fleet","claims",{"skillNo":113,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":121,"publishedAt":43},"01M6GXS873AD1Y6RTM6GV47F3E","wiki","Markdown-first knowledge base where the LLM acts as librarian. Ingests raw sources, compiles and interlinks topic files, self-maintains an index. No vector DB or embeddings required -- uses LLM-native navigation over structured markdown up to ~400K words.","https:\u002F\u002Fgithub.com\u002FSethGammon\u002FCitadel\u002Fblob\u002Fmain\u002Fskills\u002Fwiki\u002FSKILL.md",[118],{"categoryNo":119,"categoryName":120,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究",[114,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,105,33,137,138],"vector","embeddings","librarian","markdown","knowledge","karpathy","knowledge management","karpathy wiki","up","files","maintain","self","knowledge base","project","db","sources","native",{"skillNo":140,"name":141,"nameZh":6,"description":142,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":143,"categories":144,"keywords":145,"publishedAt":43},"01M6GXS2840SJ61285SZ43EJC3","watch","File sentinel that monitors the working directory for changes and marker comments, then auto-triggers appropriate skills. Poll-based via git diff against the last scan commit. Writes intake items for batch processing and routes marker actions through \u002Fdo. Use for automatic reactions to file changes; do NOT use for one-off inspection or tasks needing human judgment per file.","https:\u002F\u002Fgithub.com\u002FSethGammon\u002FCitadel\u002Fblob\u002Fmain\u002Fskills\u002Fwatch\u002FSKILL.md",[],[141,146,147,42,148,149,150,151,152,153,154,155,131,156,157,158,159,160,33,161],"directory","commit","git","batch","actions","start","sentinel","diff","auto","stop","do","scan","human","judgment","reactions","processing",{"skillNo":163,"name":164,"nameZh":6,"description":165,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":166,"categories":167,"keywords":171,"publishedAt":43},"01M6GXRXHYJ5RD9RZP81S2VFSW","verify","Self-test the Citadel hook pipeline from within a live session. Exercises real tool calls (Write, Edit, Bash, Read) and checks that hooks fired, telemetry accumulated, and no errors occurred. Reports HOOK HEALTH: PASS or HOOK HEALTH: FAIL with a per-hook breakdown.","https:\u002F\u002Fgithub.com\u002FSethGammon\u002FCitadel\u002Fblob\u002Fmain\u002Fskills\u002Fverify\u002FSKILL.md",[168],{"categoryNo":169,"categoryName":170,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",[164,172,173,174,175,176,177,178,179,180,35,181,182,133,183,33,184,185,186,27],"citadel","telemetry","harness","pipeline","Bash","tool","read","write","edit","hooks","reports","live","hook","errors","calls",{"skillNo":188,"name":189,"nameZh":6,"description":190,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":191,"categories":192,"keywords":193,"publishedAt":43},"01M6GXRS9MCJFMQZ917H2XH3AC","unharness","Safely leave Citadel using the active adoption receipt. Produces a no-write, reviewable plan, preserves a portable archive, removes only exact owned material, and reports modified or externally registered surfaces as retained or unknown. Legacy installs must be imported before exact leave is claimed.","https:\u002F\u002Fgithub.com\u002FSethGammon\u002FCitadel\u002Fblob\u002Fmain\u002Fskills\u002Funharness\u002FSKILL.md",[],[189,194,172,174,195,196,197,198,199,130,182,200,201,202,203,204,105,33,205,27],"uninstall","adoption","plan","archive","remove","only","Legacy","surfaces","clean","imported","active","material",{"skillNo":207,"name":208,"nameZh":6,"description":209,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":210,"categories":211,"keywords":220,"publishedAt":43},"01M6GXRMEJ2VHD43R9FNPD4910","triage","GitHub issue and PR investigator. Pulls open issues\u002FPRs, classifies them, searches the codebase for root cause or reviews contributed code, proposes fixes with file:line references, and optionally implements fixes. Use for investigating GitHub issues and reviewing PRs; do NOT use for general code review unrelated to GitHub issues.","https:\u002F\u002Fgithub.com\u002FSethGammon\u002FCitadel\u002Fblob\u002Fmain\u002Fskills\u002Ftriage\u002FSKILL.md",[212,215],{"categoryNo":213,"categoryName":214,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":216,"categoryName":217,"taxonomyType":218,"taxonomyTypeDesc":219},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[208,221,222,223,224,225,226,227,228,229,230,231,232,233,156,33,234,235,236,27],"code review","review","review pr","pr","code","github issues","issues","open","use","unrelated","issue","general","references","line","investigator","reviews"]