con un clic
review
// Review code for potential issues and improvements. Use when asked to review specific files, functions, or code sections.
// Review code for potential issues and improvements. Use when asked to review specific files, functions, or code sections.
Generate a changelog entry from conventional commits since the last release tag. Determines semver bump automatically or accepts an override (e.g., /changelog minor).
Review and plan focused git commits from tangled changes
Update TPP for engineer handoff when context is running low or session is ending.
Iterative deep planning with critiques and alternatives. Use when facing complex design decisions requiring thorough analysis.
Work on a Technical Project Plan. Use when starting work on a TPP from _todo/, resuming a TPP, or when the user references a TPP file.
| name | review |
| description | Review code for potential issues and improvements. Use when asked to review specific files, functions, or code sections. |
| allowed-tools | Bash, Read, Glob, Grep, Edit, Write, WebSearch |
Review the mentioned code for potential issues and improvements.
Study these project resources before reviewing:
_todo/, completed in _done/_todo/ or _done/ that explains the rationale for the code under reviewOnly report verified bugs and design-principle violations grounded in concrete evidence. Do NOT report:
For EVERY potential issue, you MUST complete these steps before reporting:
Use subagents liberally:
If you find zero real issues after thorough research, say "No issues found." Do not pad the list.
Correctness
These are the load-bearing concerns for gha-dash. Review any change touching server, state, services, or routes against all four.
1. Rate limit safety (the most important operational concern)
GitHub allows 5000 requests/hour. Any new API call must be justified against that budget.
rateLimitFloor (hard reserve floor) and rateBudgetPct (per-cycle soft
cap)? See src/state.ts and src/services/github.ts@octokit/rest paginates unbounded by default. Cap explicitly
for /actions/runs and similar high-cardinality endpoints2. Token exposure & localhost binding
gh auth token output must NEVER reach the browser. Grep for token leakage
in API responses, error messages, logs, and exception stacks127.0.0.1 only — never 0.0.0.0src/server.ts3. Error propagation (no bogus guardrails)
Per DESIGN-PRINCIPLES.md Rule 5:
catch blocks that only warn — errors should propagate unless there's
a documented reason to swallow4. Cache/state consistency
src/services/cache.ts — stale reads
must not race with in-flight revalidationrefresh-preserves-data invariant in src/state.ts — polls must not destroy
cached data on transient API failures (there's a dedicated test for this)useWorkflows.ts that replace-instead-of-merge are bugs~/.config/gha-dash/cache.json schema changes need a
migration story or invalidationrun.name from the API is unreliable — derive workflow names from run.path
(e.g. .github/workflows/build.yml → "build"). display_title is shown as
tooltip only. See CLAUDE.md "Gotchas / Lore"x-ratelimit-remaining: 0 means rate-limited (distinct from auth failure);
404 on a repo usually means visibility change, not a bugworkflow_dispatch YAML parsing: all on: syntax variants must be handled
(string, array, object with dispatch key). See
src/services/__tests__/dispatch.test.ts"false" when missingCode quality (grounded in DESIGN-PRINCIPLES.md)
Allowed, but only when grounded in a specific rule and backed by concrete evidence. Cite the rule or tidying by name.
Per CLAUDE.md: tidyings should be proposed as suggestions with their name and rationale, not applied silently. Keep them separate from behavior changes.
TypeScript / ESM conventions (from CLAUDE.md)
?? (not ||) for nullish coalescingnode: prefix on all Node built-in importsawait import(...) for built-ins.js extension (ESM requirement)Security
execSync, path traversal
in config/cache file handling)src/server.tsTesting gaps
github-api.test.tsroutes.test.tssrc/state.ts without coverage in state.test.ts — especially
anything touching refresh, cache prune, delete, or the
refresh-preserves-data invariantdispatch.test.tsXDG_CONFIG_HOME and APPDATAFor each issue use a short ID (e.g. #A, #B) and include:
path/to/file.ts:42 format)Emit detailed findings, and then use AskUserQuestion with checkboxes for each
item so the user can accept, veto, or comment on each one individually.