night-watchman
v1.3.0Unattended-operations engine for Claude Code: tickets as dispatch contracts, an owner decision profile that reduces questions over time, a capability ladder (script beats agent beats skill), and the orchestrator/cheap-executor split. The ticket contract comes from the work-order plugin dependency; file-mode tickets by default.
By Mike Garrett0 GitHub starsUpdated 2 days ago
Directory evidence
- Runtimes
- Claude Code
- Parsed components
- 12 skill or MCP entries
- Source updated
- Sep 22, 2026
- Manifest status
- Canonical path parsed
The directory validates manifest shape and source location. It does not execute the plugin or provide a security endorsement. Review the indexing methodology →
Install night-watchman for Claude Code
claude plugin marketplace add IchenDEV/agent-plugin-mkt
claude plugin marketplace update agent-plugin-marketplace
claude plugin install night-watchman@agent-plugin-marketplacePaste and run these commands in a terminal with Claude Code. They add and refresh the PluginsMP catalog, then install this plugin.
The installer fetches third-party code from the source repository shown on this page. This directory validates manifest structure and source location, but does not perform a security audit; review the manifest, components, and source before installing.
Get the source manually
git clone https://github.com/moneymikeMD/night-watchmanClone the source repository, then follow its setup instructions to add the plugin to a compatible client. The repository root is the plugin root.
Plugin files
├── .claude-plugin/plugin.json├── skills/capability-ladder/SKILL.md├── skills/diagnose-and-pr/SKILL.md├── skills/grill/SKILL.md├── skills/handoff-docs/SKILL.md├── skills/session-start/SKILL.md├── skills/shell-scripting/SKILL.md├── skills/tickets-protocol/SKILL.md├── skills/to-issues/SKILL.md├── skills/to-issues-mine/SKILL.md├── skills/wave-trail/SKILL.md└── .mcp.json
Included Skills10
How to decide whether repeated work should become a script, an agent, or a skill. Use when the main thread catches itself doing something inline for the second time, when asked "should this be a script/agent/skill", or when a task keeps recurring without a fixed home for it.
Wiring guidance for dispatching a failure signal (an alert, a failed check) to the diagnose-and-pr agent and handling its output. Use when a project wants to turn monitoring findings into draft PRs instead of manual triage, when deciding what counts as in-scope for that agent, or when the owner asks to diagnose/debug a specific failing behaviour and wants the disciplined loop (a red command before any theory), not a one-line question.
Stress-test a plan, design, or decision by interviewing the owner in rounds until nothing is left assumed, then hand the settled decisions to to-issues. Use when the user says "grill me", "grill this plan", asks to pressure-test an idea before work starts, or a to-issues decision ticket needs an owner conversation.
Writing a session wrap-up note for whoever picks this up next — a fresh session, or a different person. Use at session end, when the user says "write up where we left off", or before closing a session that did real work.
The opening move for a fresh session in a project running this plugin's unattended-operations model — orient from docs/, verify every awaiting-deployment ticket against reality, and fan startable work out to pinned-model subagents in parallel. Load when the user says "start on the next open tickets", "pick up where we left off", "what can be worked on", or opens a session with no specific task.
Shared-lib conventions and the shipped-bug rules for scripts/ — bash 3.2 limits, subshell die, pipe_ok, secrets in argv, and structural network isolation in selftests. Load before writing or reviewing anything in scripts/.
The docs/ routing table and the ticket workflow — status-is-a-directory-move (or a tracker transition, if one is adopted), the frontmatter/field contract, body-vs-progress-note rules, and the UNVERIFIED discipline. Load for session wrap-up, ticket filing, ticket transitions, or any durable-knowledge capture.
Turn a finished planning, grilling, or design conversation into independently-workable tickets as frontmatter Markdown files on disk, so the session can be closed and the work picked up cold by parallel agents in git worktrees. Use this whenever a grilling session ends, whenever the user says "turn this into tickets/issues/a work log", "write this up so I can start a fresh session", "break this into work I can parallelise", or after any long discussion that settled a bunch of decisions and now needs to survive the context window. Also use it when a plan already exists but the tickets are too coupled or too vague for an agent to execute without asking questions.
Mine a settled planning, grilling, or design conversation into a decision-list JSON conforming to work-order's decision-list/FORMAT.md — the mining half of to-issues, split so that ticket authoring lives in work-order's emit-tickets skill instead of here. Use whenever a grilling session ends and the decisions need to leave the conversation as data, before anything decides how they become ticket files.
Keep an append-only decision trail for an unattended or dispatch-provider wave (one row per fork, pivot, revert, or verified unit), audit it against the transcript at wrap-up, and have a second-tier reviewer write an Attention section for the human. Use when a wave is dispatched through a dispatch provider, or any run the owner is not watching live.
MCP servers2
- command
- node
- args
- ${HOME}/.claude/mcp/memory/server.js
- command
- node
- args
- ${HOME}/.claude/mcp/release/server.js
- env.AI_TOOLKIT_ROOT
- ${HOME}/code/home_workspace/ai-toolkit
Plugin manifests1
{
"name": "night-watchman",
"version": "1.3.0",
"description": "Unattended-operations engine for Claude Code: tickets as dispatch contracts, an owner decision profile that reduces questions over time, a capability ladder (script beats agent beats skill), and the orchestrator/cheap-executor split. The ticket contract comes from the work-order plugin dependency; file-mode tickets by default.",
"author": {
"name": "Mike Garrett"
},
"dependencies": [
{
"name": "work-order",
"version": "^1.3.0",
"marketplace": "moneymike-plugins"
}
],
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "${CLAUDE_PLUGIN_ROOT}/hooks/guard-fs-writes.sh",
"timeout": 10
}
]
},
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "${CLAUDE_PLUGIN_ROOT}/hooks/bash-result-shunt.sh",
"timeout": 10
},
{
"type": "command",
"command": "${CLAUDE_PLUGIN_ROOT}/hooks/read-shunt.sh",
"timeout": 60
}
]
},
{
"matcher": "Read",
"hooks": [
{
"type": "command",
"command": "${CLAUDE_PLUGIN_ROOT}/hooks/read-shunt.sh",
"timeout": 60
}
]
},
{
"matcher": "WebFetch",
"hooks": [
{
"type": "command",
"command": "${CLAUDE_PLUGIN_ROOT}/hooks/webfetch-cache-pre.sh",
"timeout": 20
}
]
}
],
"PostToolUse": [
{
"matcher": "WebFetch",
"hooks": [
{
"type": "command",
"command": "${CLAUDE_PLUGIN_ROOT}/hooks/webfetch-cache-post.sh",
"timeout": 20
}
]
}
],
"SessionEnd": [
{
"hooks": [
{
"type": "command",
"command": "${CLAUDE_PLUGIN_ROOT}/hooks/session-cost.sh",
"timeout": 30
}
]
}
],
"SubagentStop": [
{
"matcher": "script-author|script-reviewer",
"hooks": [
{
"type": "command",
"command": "${CLAUDE_PLUGIN_ROOT}/hooks/script-events-hook.sh",
"timeout": 30
}
]
}
]
}
}For maintainers
If you maintain this plugin, link to this source-backed listing from your README so users can review its manifest and indexed components.
[night-watchman on Agent Plugins Marketplace](https://pluginsmp.com/plugins/night-watchman)