agent-check
FreeValidate custom agent file format and structure. Use after creating or editing an agent, before committing agent changes, or when an agent fails to load.
The English summary is being prepared. Showing the original description.
Validate hooks configuration and scripts. Use after adding or editing hooks in settings.json, before committing hook changes, or when a hook fails to fire.
The English summary is being prepared. Showing the original description.
See how to installReview the instructions the agent will receive before you install.
Validate hooks configuration in .claude/settings.json and hook scripts against
the official Claude Code spec.
Verify the hooks section exists and is valid.
Claude Code defines 30 hook events. Accept any of them; flag unknown names
with a typo hint (e.g. PrePromptSubmit -> UserPromptSubmit,
PostToolBatchFailure -> PostToolBatch, SubagentStarts -> SubagentStart).
| Group | Events |
|---|---|
| Lifecycle | SessionStart, SessionEnd, Setup |
| Prompt | UserPromptSubmit, UserPromptExpansion |
| Tool | PreToolUse, PostToolUse, PostToolUseFailure, PostToolBatch |
| Permission | PermissionRequest, PermissionDenied |
| Subagent | SubagentStart, SubagentStop |
| Stop | Stop, StopFailure |
| Task | TaskCreated, TaskCompleted |
| Compaction | PreCompact, PostCompact |
| Notification | Notification, MessageDisplay |
| MCP elicitation | Elicitation, ElicitationResult |
| Environment | ConfigChange, CwdChanged, FileChanged, InstructionsLoaded, WorktreeCreate, WorktreeRemove, TeammateIdle |
That is all 30 events. See the official hooks docs for each event's payload.
type is one of: command, prompt, http, mcp_tool, agent (default command)type: command: command path exists and script is executabletype: prompt: prompt string is non-emptymatcher is a string if present (tool events: tool name, regex, or *)timeout is a positive integer if present (default: 60s per hook)once is boolean if presentif / statusMessage are strings if present0 = allow/continue, exit 2 = block for PreToolUse).When a script does emit JSON, validate it against the event contract:
hookSpecificOutput.permissionDecision is allow, deny, or
ask. The legacy top-level {"decision": "approve" | "block"} is still accepted.{"decision": "block", "reason": "<next prompt>"} — the key is reason.hook_event_name (not hook_type).## Hooks Validation Report
### Configuration Status: VALID / INVALID
### Configured Hooks
| Event | Matcher | Script | Status |
|-------|---------|--------|--------|
| Stop | * | auto-loop-stop.sh | OK |
### Script Validation
| Script | Exists | Executable | Output |
|--------|--------|------------|--------|
| auto-loop-stop.sh | OK | OK | JSON OK / silent |
### Issues Found
1. [Issue and fix]
hook_type -> hook_event_name in emitted JSONNo reviews yet. Tell others what you thought.
No login needed. Share how it worked for you, ask a question, or note where it did not run.
No comments yet. Be the first to write one.
Validate custom agent file format and structure. Use after creating or editing an agent, before committing agent changes, or when an agent fails to load.
The English summary is being prepared. Showing the original description.
Generate custom agent from template. Use when creating a new subagent from scratch, or scaffolding an agent file with correct frontmatter.
The English summary is being prepared. Showing the original description.
List all available agents (core, expert, self-evolving). Use when the user asks what agents are available or runs /agents.
The English summary is being prepared. Showing the original description.
TDD-based autonomous development loop with checkpoint recovery and observability changelog
The English summary is being prepared. Showing the original description.
View and manage the runtime changelog for observability
The English summary is being prepared. Showing the original description.
Track development session events in a daily markdown changelog, including file changes, test results, and key decisions.
The English summary is being prepared. Showing the original description.