Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog , and this project adheres to Semantic Versioning .
[Unreleased]
[1.16.0] - 2026-04-25
Added
- Candid Chrome QA (
/candid-chrome-qa): A new skill that drives a real Chrome session against your running web app, walks the target like a real user across desktop and mobile, runs DOM/console/network probes, and emits structured findings JSON to.context/findings/<date>-<slug>.jsonfor downstream triage- Pre-flight protocol: verifies dev server (curl health check), confirms a fresh Chrome tab, resizes to desktop default (1440x900), navigates and confirms logged-in state, clears the console baseline, and verifies required data is present before any QA work begins. Aborts with a focused error if any check fails — no silent downgrade to source-only review
- Per-target flush-capture cycle: for each route or tab, flush console + network telemetry, exercise 2–3 main interactions plus 1 edge case, capture telemetry against a console-triage table (P0–P3 mapping for the noisy stuff: TypeError, hydration mismatch, CORS, deprecated lifecycle, unmounted setState, etc.) and a network health threshold table (4xx rate, response time, payload size, duplicate requests). Findings appended per-finding, never batched
- Mobile pass required by default: resizes to 390x844 and re-walks the top 5 targets with a 44×44px touch-target probe. Falls back to ~500px if Chrome’s UI chrome enforces a larger min content width. Mobile-only bugs surface in roughly 30% of passes
- Cross-cutting probes: a single
javascript_execcall per pass enumerates icon-only buttons without aria-labels, images without alt text, and inputs without labels — catches DOM-level a11y violations that click-by-click testing misses - Schema v2.0 (best-in-class redesign over the source skill): top-level adds
schemaVersion,summaryblock (severity + category counts populated at end-of-pass); per-finding addscategory(bug/a11y/perf/ux/copy/security/compat — separate routing dimension from severity),viewport(desktop/mobile/both — first-class mobile signal),url(full repro URL),capturedAt(per-finding ISO8601 timestamp),confidence(definite/likely/suspected); renamestag→surface; promotesevidence.consoleErrorsfromstring[]to[{level, message}]andevidence.networkRequestsfromstring[]to[{method, url, status, durationMs?}]; dropsbody(pure derivation) andstatus(consumer-owned). v1 triage tool consumers will need migration — seeschemaVersionfield - End-of-pass summary: writes the
summaryblock to JSON and prints to stdout — total finding count, severity breakdown, category breakdown, and the title + URL of every P0/P1 finding. JSON file remains the source of truth; stdout is a courtesy for users without a triage tool - CLI flags:
--url <url>(skip URL prompt),--mobile-only(invert default to mobile-only) - Hard rules enforced: never click destructive actions (delete/disconnect/drop/force/publish/purchase) without explicit per-action approval; never silently downgrade to source-only review when data is missing; never invent the schema; never batch-write findings; never skip mobile or cross-cutting probes; never use a stale tab
- Pre-flight step 0 detects whether the Claude in Chrome MCP is installed (via
ToolSearch) and aborts with a clear install link if absent. Batch-loads every browser tool the skill will use so subsequent calls don’t pay per-tool ToolSearch overhead - Project-context loading: pre-flight reads
Technical.mdfor QA-relevant rules (browser support matrix, accessibility target, API base path, design-system constraints, auth setup) and an optionalchromeQAblock in.candid/config.json(defaultUrl,apiPathPattern,desktopViewport,mobileViewport) — keeps the skill from being an island next to the rest of the Candid pack - Deterministic finding IDs:
idis nowF-+ the first 8 hex chars ofSHA-1(url|title), so the same finding in a re-run gets the same ID and downstream tools can dedup across passes - Deterministic slug + filename collision handling: file slug derived from the first 4 words of
goal(lowercased, alphanumerics + hyphens, ≤40 chars). If today’s file with the same slug exists, the skill writes to<YYYY-MM-DD>-<HHmm>-<slug>.jsoninstead of overwriting - Comprehensive docs: dedicated
/docs/core-features/candid-chrome-qapage covering quick start, the flush-capture cycle, edge-case patterns, schema reference with v1→v2 migration table, severity scale → Linear priority mapping, configuration reference, Technical.md integration, and FAQ - Requires the Claude in Chrome MCP installed in your Claude Code environment and a running web app reachable via HTTP
Changed
- Plugin description + keywords updated in
.claude-plugin/plugin.jsonand.claude-plugin/marketplace.jsonto surface the new browser-QA capability for marketplace discovery — added keywordsqa,testing,browser,chrome,a11y,accessibility
[1.15.0] - 2026-04-25
Added
- Install step (
ship.installCommand/fastShip.install): New optional step that runs a dependency-install command before build and tests. Addresses the common failure mode where build/test logs are really stale-dependency errors. Common values:pnpm install,npm ci,poetry install,bundle install. Opt-in — leaveinstallCommandunset to skip the step entirelyship.installCommand— runs by default in/candid-shipwhen set, skipped silently when unsetfastShip.install— explicit toggle for/candid-fast-ship; requiresship.installCommandto be configured--skip-installflag on/candid-shipfor one-off skips when deps are known to be current- PR body now includes an
Install: PASS | SKIPPEDrow in the Verification block - Summary output includes an
Install:row wheninstallCommandis configured
Changed
- Shared shipping workflow extracted to
skills/candid-ship/WORKFLOW.md. Bothcandid-shipandcandid-fast-shipnow reference this single document for the mechanics of pre-flight, install, build, tests, PR creation, issue tracker, auto-merge, post-merge, and summary. Each skill owns only the skip semantics unique to its mode (--skip-*flags vsfastShip.*toggles). Removes ~80% duplication between the two skill files and substantially reduces tokens loaded per shipping invocation candid-shipSKILL.md trimmed from 631 → ~180 lines. Field-descriptions table now referencesskills/candid-review/CONFIG.mdrather than restating itcandid-fast-shipSKILL.md trimmed from 532 → ~180 lines. Same dedup pattern- Single
git logcall during PR creation now serves both title generation and body generation (previously three separate calls on the same range) git rev-list --countreplacesgit log | head -20for the commits-ahead pre-flight check
[1.14.0] - 2026-04-25
Added
- Candid Fast Ship (
/candid-fast-ship): A new minimal shipping command for low-risk changes. Unlike/candid-ship(which runs everything by default and lets you skip steps),/candid-fast-shipruns nothing by default and only executes the steps you explicitly enable in a newfastShipconfig block. PR creation is the only mandatory step- New
fastShipconfig block (sibling toshipin.candid/config.json): boolean toggles forreview,build,tests,issueTracker,autoMerge, andpostMergeCommand— all default tofalse. OptionaltargetBranchoverride - Inherits configuration from
ship: command values (buildCommand,testCommand,postMergeCommand), tracker config (issueTracker.provider,state,prompt,teamPrefixes), and target branch all come from the existingshipblock —fastShiponly controls which steps run, not how - Use cases: hotfixes, docs updates, dependency bumps, config changes, or any class of changes where the full review cycle would be overkill
- CLI flags:
--auto-merge/--no-auto-merge(override config),--dry-run(preview plan). No--skip-*flags — there’s nothing to skip when steps are off by default - Graceful skipping: enabling a step in
fastShipwithout the correspondingshipconfiguration shows a clearSKIPPED — not configured in shipmessage rather than failing - candid-init flow: new Step 10.7 prompts the user to configure
fastShipafter the main ship config is set, with preset options (None / Build only / Build + auto-merge / Custom) - Comprehensive docs: dedicated
/docs/core-features/candid-fast-shippage covering quick start, config block, relationship toship, use cases (4 real examples), skip-behavior table, and a comparison table betweencandid-shipandcandid-fast-ship - Config reference updated:
docs/reference/config-optionsnow documents the fullfastShipschema, andskills/candid-review/CONFIG.mdcovers the validation rules
- New
[1.13.0] - 2026-04-25
Added
- Issue Tracker Integration (
ship.issueTracker): New optional step in candid-ship that automatically transitions a tracked issue to a configured state after PR creation- Provider-agnostic schema (
provider,enabled,teamPrefixes,state,prompt) — built to extend to Asana, Jira, GitHub Issues, Shortcut, etc. Today onlyprovider: "linear"is implemented; other values produce a friendly warning with a link to open a request , and the step is skipped - Configurable prompt with intelligent default (
ship.issueTracker.prompt): User-editable template sent to the MCP server, written bycandid-initinto.candid/config.jsonso it’s discoverable and easy to edit. Supports{issueId},{state},{provider}placeholders. The default prompt encodes four safety invariants: (1) single-issue scope, (2) single-field scope (onlystatechanges), (3) idempotent no-op when already in target state, and (4) no fallback search on missing-issue errors. Default:Update issue {issueId}: set its state to "{state}". Update only this one issue and only its state — do not modify any other issues, fields, or properties. If the issue is already in "{state}", report success without action. If the issue is missing or inaccessible, report the error and stop.Custom prompts must preserve invariants 1 and 4 - Branch-name parsing: extracts the issue ID using a case-insensitive regex built from
teamPrefixes(defaults:DIS,ENG,DISC) — easy to edit to match your tracker workspace’s team keys - Opt-in & graceful: disabled by default. Skips silently in every “can’t run” scenario — config absent,
enabled: false, no provider set, unsupported provider, MCP not installed, no matching team prefix in branch, or MCP error. The ship continues regardless. Branches without a tracked issue and repos without an MCP are unaffected - Linear MCP integration: requires the official Linear MCP server (claude.ai/Linear) when
provider: "linear" - candid-init flow: Step 10.6f asks “Yes — Linear / Yes — other tracker (request support) / No, skip” — the “other tracker” option links to the issues page so users can request their tracker, and skips configuration cleanly
- Comprehensive docs: provider setup, MCP installation, branch naming conventions, custom prompt examples, skip-scenario table, and instructions for requesting other providers — see /docs/core-features/candid-ship#issue-tracker-integration
- Config reference updated:
docs/reference/config-optionsnow documents the fullship.*schema includingissueTracker, andskills/candid-review/CONFIG.mdcovers the validation rules
- Provider-agnostic schema (
Changed
- candid-ship summary: Now includes an
Issue:row whenissueTracker.enabledistrue docs/reference/config-options/page.mdx: Now documents the completeshipconfig (was previously absent)
[1.12.0] - 2026-04-25
Added
- Integrated optimization stage in
/candid-init: Two new opt-in flags run the/candid-optimizeaudit immediately after Technical.md and config.json are generated, so users get a tightened file in one command (closes #19)--optimize— runs the full candid-optimize audit (Technical.md + excludes + register + config) in interactive mode after generation; user chooses to apply all, review each, or skip--auto-optimize— runs the audit and applies all recommendations without prompting- Default behavior unchanged: when neither flag is passed, candid-init writes the raw generated files and prints a
Tip: run /candid-optimize…hint - Implementation delegates to the existing candid-optimize skill — no analysis logic is duplicated, so verbose/duplicate/low-signal heuristics stay in one place
- Useful for thorough mode where 5 parallel generation sub-agents can produce cross-section duplicates and verbose rules without joint awareness
[1.11.0] - 2026-04-19
Added
- Post-Merge Command (
ship.postMergeCommand): New config field to run a shell command after auto-merge is successfully enabled- Fires after
gh pr merge --squash --autosucceeds — useful for triggering deployments, notifications, or cleanup scripts - Conditional execution: only runs when
autoMergeis enabled and the auto-merge command succeeds - Non-blocking: if the command fails, a warning is shown but the workflow is not aborted (the PR is already merging)
- Shown in ship plan display and summary output
- Documented in CONFIG.md, candid-ship docs, and example configs
- Fires after
[1.10.0] - 2026-03-17
Added
- Ship Workflow (
/candid-ship): New command to orchestrate the full shipping workflow — review, build, test, PR, and merge in one command- Review step: Runs candid-loop to iteratively fix all code issues before shipping
- Build verification: Runs configured build command (e.g.,
npm run build) with fail-fast abort - Test execution: Runs configured test command (e.g.,
npm test) with fail-fast abort - PR creation: Auto-generates PR title and body from git log, creates via
gh pr create - Auto-merge: Optionally enables GitHub auto-merge via
gh pr merge --squash --auto - Configurable: New
shipfield in config.json for build/test commands, target branch, auto-merge, and additional review prompt - Additional prompt: Pass extra review context via
ship.additionalPrompt— e.g., “Focus on security and ensure all API endpoints have auth middleware” - CLI flags:
--auto-merge,--no-auto-merge,--skip-review,--skip-build,--skip-tests,--dry-run - Fail-fast: Aborts on review incomplete, build failure, or test failure with clear error messages
- Pre-flight checks: Validates
ghCLI availability, authentication, branch state, and commits ahead before starting - Ship plan: Displays full execution plan before starting, with
--dry-runoption to preview without executing
Changed
- candid-init config builder: New step 10.6 for ship configuration with auto-detection of build/test commands from package.json, target branch from git branches, and prompts for auto-merge and additional review context
- CONFIG.md schema: Added
shipfield with validation rules forbuildCommand,testCommand,targetBranch,autoMerge, andadditionalPromptsub-fields
[1.9.0] - 2026-02-21
Added
- Context Optimization (
/candid-optimize): New command to audit and optimize the context candid loads during reviews- Token budget estimation: Shows breakdown of tokens consumed by Technical.md, decision register, and config files with visual bar chart
- Technical.md efficiency analysis: Identifies verbose rules (>200 chars), near-duplicate rules (keyword overlap), and low-signal rules (no project-specific references) with condensed rewrites and token savings estimates
- Exclude pattern scanning: Detects generated files, build output, vendored code, minified files, lock files, and source maps missing from exclusion config
- Decision register optimization: Recommends “lookup” mode for large registers in “load” mode, suggests pruning resolved entries beyond 100, detects duplicate questions
- Config tuning recommendations: Flags missing config.json, unconfigured merge target branches, and suggests focus modes for large Technical.md files
- Interactive apply: Choose to apply all, review each recommendation, or dry-run only
- Section filtering:
--section technical-md|excludes|register|configto analyze specific areas - Before/after summary: Shows token reduction after applying optimizations
[1.8.0] - 2026-02-21
Changed
- candid-init config builder (Step 10): Replaced the placeholder “auto-detect settings” step with a structured 6-sub-step guided config builder
- 10.1 — Branch strategy detection: Runs
git branch -a, maps to branching strategy (Git Flow, GitHub Flow, trunk-based, legacy), confirms with user via AskUserQuestion with option to customize or skip - 10.2 — Exclude pattern detection: Scans for generated files, vendor directories, build output, and minified files using portable
findcommands; presents detected patterns for confirmation - 10.3 — Tone preference: Interactive prompt for harsh, constructive, or skip (defer to per-review choice)
- 10.4 — Auto-commit preference: Interactive prompt to enable or skip (defaults to false)
- 10.5 — Decision register: Existing prompt retained for enable/skip
- 10.6 — Preview and confirm: Shows assembled JSON for user approval before writing, with option to adjust
- Explicit note that
focusfield is intentionally skipped — it’s a per-review concern, not a project-level default - Consistently omits skipped fields rather than writing defaults — sparse configs that age well
- Handles
main+mastercoexistence (migration repos) and checks remote branch names
- 10.1 — Branch strategy detection: Runs
[1.7.0] - 2026-02-21
Added
- Decision Register (
decisionRegisterconfig): Track questions and decisions during code reviews- Active knowledge base: Before asking a question, checks the register for prior answers and reuses them automatically — the same question is never asked twice
- Two consultation modes:
"lookup"(per-question check, default) or"load"(full register in context) - Automatic question capture: Issues marked “Clarification Needed ?” are recorded in the register
- User-initiated questions: Choose “I have a question about this” during individual fix review
- Resolution tracking: Via answers, re-review detection, or explicit decline
- Four statuses:
open,answered,superseded,declined - Deduplication: Avoids duplicate entries for the same logical question
- Configurable path: Default
.candid/register/review-decision-register.md, customizable viadecisionRegister.path - Loop mode support: Prior decisions auto-applied in auto mode; interactive in review-each/interactive modes
- Git-friendly: Register designed to be committed (unlike ephemeral
last-review.json) - Documentation: New core feature page, config reference update, homepage feature card
Changed
- Fix Confidence Levels: Added “Clarification Needed ?” level for issues requiring author input
- Phase 8b (Individual Fix Review): New “I have a question about this” option when register is enabled
- candid-loop auto mode: Prior decisions from register applied automatically across iterations
- candid-loop summary: Shows decision register statistics when enabled
- candid-init: Offers option to enable decision register during project initialization
[1.6.1] - 2026-01-27
Added
Changed
Fixed
- Update Technical.md path references from
.claude/Technical.mdto.candid/Technical.mdin documentation, templates, and skill files
[1.6.0] - 2026-01-27
Added
- Candid Loop (
/candid-loop): New skill that runs candid-review in a loop until all issues are resolved- Three execution modes:
auto(default): Automatically applies all fixes without promptingreview-each: Go through each fix one by one with simple Yes/No promptsinteractive: Full control with skip, ignore list, and batch options
- Configurable max iterations: Prevent infinite loops with
--max-iterations N(default: 5) - Category filtering: Only enforce specific categories with
--categories critical,major - Ignored issues: Permanently skip false positives via
.candid/config.json:loop.ignored.categories: Skip entire categories (e.g.,["edge_case"])loop.ignored.patterns: Skip by title regex (e.g.,["Unicode", "timezone"])loop.ignored.ids: Skip specific issue IDs fromlast-review.json
- Add-to-ignore workflow: In interactive mode, choose “Add to ignore list” to persist skips
- Progress tracking: Shows iteration count, issues fixed, and detailed summary
- Documentation: New feature page, how-to guide for automated review loops, updated slash commands reference
- Three execution modes:
[1.5.0] - 2026-01-22
Added
-
Analysis effort levels for candid-init (
--effort quick|medium|thorough): Control how deeply candid-init analyzes your codebasequick(~30 sec): Framework detection, directory structure, file suffixes, top importsmedium(~1-2 min): Adds naming conventions, error patterns, test organization, reads 5-8 key filesthorough(~5-10 min, default): Launches 3-5 sub-agents to read ALL files in parallel- Generated rules now reference specific file paths from your project
- Pattern-to-rule transformation creates project-specific standards, not generic templates
-
Sub-agent comprehensive analysis in thorough mode: Parallel agents analyze entire codebase
- Architecture Agent: Reads all controllers/services/repositories, maps dependency graph, finds violations
- Naming Agent: Reads 20-30 files across layers, extracts naming conventions with consistency metrics
- Error/Security Agent: Reads all error handling and auth code, identifies patterns and gaps
- Testing Agent: Reads all test files, documents organization and coverage gaps
- Framework Agent: Reads all React components or API routes (framework-specific)
- Each agent proposes rules with specific file:line evidence
-
Two-phase sub-agent architecture for 500-line Technical.md: Thorough mode now generates comprehensive documentation
- Phase 1 - Analysis: 5 parallel agents read ALL files, extract patterns with file:line evidence
- Phase 2 - Generation: 5 parallel agents write sections (~80-120 lines each)
- Architecture Section Agent: Layer rules, module boundaries, dependency graph
- Naming Section Agent: File naming, class naming, function naming, variable naming
- Error Handling Section Agent: Error patterns, logging standards, response formats
- Testing Section Agent: Test organization, naming conventions, coverage requirements
- Security & Framework Section Agent: Auth patterns, framework conventions, gaps table
- Output scales by effort: quick (~50 lines), medium (~150 lines), thorough (~500 lines)
- Each section includes specific file paths and code examples from the analyzed codebase
-
Architecture analysis in candid-init: Thorough mode now generates architecture rules with enforcement
- Detects layer boundaries (controllers/services/repositories) and generates dependency rules
- Detects module boundaries (feature-based structure) and generates isolation rules
- Identifies actual violations in the codebase and notes them in Technical.md
- Rules reference specific paths: “Controllers in
src/controllers/must not import fromsrc/repositories/”
-
Gap analysis in candid-init: Compares detected patterns to best practices
- Security gaps: Input validation, parameterized queries, auth middleware
- Error handling gaps: Custom error classes, consistent response format
- Testing gaps: Missing test coverage, inconsistent naming
- TypeScript gaps: Strict mode, any usage count
- Generates “Gaps vs Best Practices” table in Technical.md
Changed
- candid-init generates both Technical.md and config.json: The init command now creates a complete project setup in the
.candid/directory- Technical.md moved from project root to
.candid/Technical.md - New
.candid/config.jsonfile generated with auto-detected settings - Auto-detects configuration values:
tone: defaults to “constructive” (safer for teams)exclude: parses .gitignore and adds framework-specific patternsfocus: infers from project structure (auth/ → security, WebSocket → performance)mergeTargetBranches: detects from existing git branches (stable, main, master, develop, trunk)autoCommit: defaults to false
- Interactive confirmation flow: “Accept all”, “Customize settings”, or “Skip config generation”
- Both files created in
.candid/directory with proper error handling - 9-step workflow (expanded from 7 steps) with enhanced project analysis
- Prompts for overwrite if existing files found
- Technical.md moved from project root to
[1.4.2] - 2026-01-18
Added
- Auto-commit config option (#12):
autoCommitfield in config files allows defaulting auto-commit behavior- Set
"autoCommit": truein.candid/config.jsonor~/.candid/config.jsonto enable auto-commit by default - CLI flag
--auto-commitstill overrides config files - Defaults to
falsefor backward compatibility - Follows same precedence rules as other config options: CLI flag → project config → user config → default
- Set
[1.4.1] - 2026-01-18
Fixed
- Plugin update compatibility: Renamed
templates/Technical-nextjs-vercel-supabase-clerk-loop.mdtotemplates/nextjs-stack.mdto fixENAMETOOLONGerror during plugin updates. The long path was causing filesystem errors when Claude Code’s plugin update process created temporary cache directories.
Changed
- Update troubleshooting documentation: Enhanced the updating guide with step-by-step workaround for
ENAMETOOLONGerrors. Users can now runclaude plugin marketplace update candidbefore updating, or follow a force reinstall procedure if needed.
[1.4.0] - 2026-01-18
Added
- Website launched: Official documentation site now live at www.candid.tools
Changed
- Auto-commit flag renamed:
--auto-commitis now--commitfor brevity
[1.3.0] - 2026-01-17
Added
- Automatic commit mode (
--auto-commitflag): candid-review can now automatically create git commits after applying fixes- Commit message includes detailed list of all applied fixes with file locations and line numbers
- Only stages files modified by candid-review (preserves other unstaged changes)
- Includes co-author tag following repository convention
- Graceful error handling - commit failures preserve applied fixes and continue review
- Usage:
/candid-review --auto-commitor combined with other flags like/candid-review --harsh --auto-commit
[1.2.0] - 2026-01-17
Added
-
Configurable Merge Target Branches: Specify which branches to compare against when reviewing branch diffs, replacing the hardcoded
main → stable → masterfallback chain.- Config field:
mergeTargetBranchesaccepts an array of branch names (e.g.,["develop", "main"]) - CLI flag:
--merge-target <branch>(repeatable) for one-off overrides - Four-tier precedence: CLI flags → project config → user config → default (
["main", "stable", "master"]) - Workflow examples: New example configs for Git Flow, trunk-based, and GitHub Flow in
examples/ - Graceful fallback: Tries each branch in order, uses first that exists
- Backward compatible: Default behavior unchanged for existing users
- Config field:
-
Edge-Case Focus Mode (
--focus edge-case): New focus mode dedicated to finding boundary conditions and error scenarios- Systematically checks every code path for edge cases using comprehensive checklists
- Finds 2-3x more edge case issues than general reviews
- Groups related edge cases into comprehensive, actionable issues
- 8 systematic check categories:
- Input Validation Matrix: null/undefined, empty collections, type validation, boundary values, special characters, whitespace
- Async Operation Safety: timeouts, cancellation, error handling, race conditions, double-invocation, state validity
- Data Structure Edge Cases: empty results, single items, pagination, sorting/filtering, duplicates
- Network Resilience: timeouts, retry logic, error codes, offline handling, partial failures, loading states
- State Lifecycle: cleanup, concurrent updates, navigation safety, re-initialization, memory leaks
- Date/Time Edge Cases: timezone, DST, leap year/second, invalid dates, locale formatting
- Browser/Environment: API availability, mobile/desktop, keyboard accessibility, storage availability, screen sizes
- Security Edge Cases: CSRF tokens, session timeout, permission changes, token refresh, XSS vectors
- Can be set via CLI flag:
/candid-review --focus edge-case - Can be set in config files:
{"focus": "edge-case"} - New documentation:
docs/example-reviews/edge-case-review.mdwith side-by-side comparison showing general vs edge-case reviews
-
New Example Configs:
examples/git-flow/config.json: Git Flow workflow (develop → main)examples/trunk-based/config.json: Trunk-based development (trunk)examples/github-flow/config.json: GitHub Flow (main only)
-
New Test Cases: 5 validation test files for merge target branch configuration
valid-merge-target-single.json,valid-merge-target-multiple.json,valid-merge-target-with-remote.jsoninvalid-merge-target-empty.json,invalid-merge-target-string.json
Changed
- Focus Mode Options: Added “edge-case” as valid value for
focusfield in config files and CLI - Config Validation: Updated to accept “edge-case” alongside “security”, “performance”, and “architecture”
- Documentation updates: README.md, review-scope.md, troubleshooting.md, and ci-cd.md updated with merge target configuration guidance
- New Step 2.5: Load Merge Target Branches procedure added to SKILL.md with full validation logic
- CONFIG.md schema expanded: Added
mergeTargetBranchesfield with validation rules
[1.1.0] - 2026-01-17
Added
-
Re-Review Mode (
--re-review): Compare current review against a previous review to track progress- Shows ✅ Fixed, 🔄 Still Present, and 🆕 New issues
- Review state automatically saved to
.candid/last-review.jsonafter each review - Stable issue IDs using SHA256 hash of file:line:category:title
- Net change summary showing improvement or regression
-
Technical.md Validator (
/candid-validate-standards): Check your standards file for effectiveness- 🌫️ Detects vague rules (“write clean code”, “use best practices”)
- 📏 Flags missing thresholds (“keep functions small” → needs number)
- 🔧 Identifies linter overlap (rules your ESLint/Prettier already handles)
--fixflag suggests specific rewrites for vague rules
-
New Templates:
Technical-node.md: Node.js/backend standards (API design, database, security, async)Technical-python.md: Python standards (type hints, testing, asyncio, logging)
-
New Documentation:
docs/review-scope.md: How to control what gets reviewed (scope, exclusions, focus, subagents)docs/technical-md-writing-guide.md: Good rules vs bad rules with examplesdocs/integration/ci-cd.md: CI/CD integration (GitHub Actions, GitLab, CircleCI, Azure DevOps)docs/integration/pre-commit.md: Pre-commit hook setup (Git hooks, Husky, pre-commit framework, Lefthook)
-
Focus Mode Precedence: Focus area (
--focus security/performance/architecture) now follows same precedence as tone:- CLI flag → project config → user config → no focus (all categories)
- Can be set in
.candid/config.jsonwith"focus": "security"
-
Fix Confidence Levels: Each fix now rated to help prioritize:
- Safe ✓: Mechanical fix, low risk
- Verify ⚡: Logic change, needs testing
- Careful ⚠️: Architectural change, may have side effects
Changed
- Command definition expanded:
commands/candid-review.mdnow includes full YAML frontmatter with all argument definitions - Template references:
candid-initnow points to actual template files instead of vague descriptions - Step 10 added: Review state saving after completion
- ID generation specified: Uses SHA256 hash (first 12 chars) of
${relativePath}:${line}:${category}:${title}
[1.0.3] - 2026-01-17
Added
- Config File Support for Tone Persistence: Users can now persist their tone preference across review sessions using config files, eliminating the need to select tone every time.
- Three-tier precedence: CLI flags → project config → user config → interactive prompt
- User config:
~/.candid/config.jsonfor user-wide defaults - Project config:
.candid/config.jsonfor project-specific overrides - Graceful error handling: Invalid configs show warnings and fall back to next precedence level
- Source transparency: Always shows where tone preference came from
- Forward compatibility: Unknown fields ignored; optional version field for future schema changes
- Example configs: Ready-to-use examples in
examples/harsh/andexamples/constructive/ - Comprehensive validation: Uses
jqfor JSON parsing with type and value checks - Documentation: CONFIG.md with reusable validation procedure, README.md with setup examples
Changed
- Step numbering normalized: Renamed Step 2.5 to Step 3; all subsequent steps renumbered (3→4, 3.5→4.5, 4→5, 5→6, 6→7, 7→8)
- Phase numbering normalized: Phase 6a/6b/6c renamed to Phase 7a/7b/7c to match new Step 7
- New Step 3 (Load Tone Preference): Config loading with detailed JSON validation using
jqcommands
[1.0.2] - 2026-01-15
Fixed
- Fix Selection Implementation: Step 7 now uses sequential yes/no prompts instead of requesting impossible multiselect capability. AskUserQuestion in Conductor doesn’t support multiselect, which caused the skill to skip fix selection entirely. The new implementation offers:
- Phase 7a: Bulk action shortcuts (Apply all, Critical+Major only, Review individually, None)
- Phase 7b: Individual yes/no prompts for each fix when reviewing individually
- Phase 7c: Final confirmation with summary before applying selected fixes
- Step 8 Clarification: Updated to explicitly reference selectedFixes array from Step 7
[1.0.1] - 2026-01-14
Changed
- Mandatory Fix Selection: Step 7 now explicitly requires presenting the multiselect prompt whenever issues are found. Added enforcement language to prevent skipping user selection or auto-applying fixes.
[1.0.0] - 2026-01-13
Initial release of Candid, a rebrand of radical-candor-code-review .
Features
-
Configurable Review Tone
- Harsh mode: Brutal honesty with sarcasm
- Constructive mode: Caring + challenging, full Radical Candor style
- Tone selection via AskUserQuestion or command-line args (—harsh, —constructive)
-
Technical.md Support
- Project-specific standards that inform every review
- Lookup order: project root, then .candid/Technical.md
- Issue category: 📜 Standards Violation
- Template provided in templates/Technical.md
- Best practices guide in docs/Technical-md-best-practices.md
-
Architectural Context Analysis
- Reviews consider file relationships, not just the diff
- Traces imports/exports to find downstream effects
- Checks for related test files
- Reviews recent git history for context
-
Actionable Fixes
- Every issue includes concrete code to fix it
- Fixes are copy-paste ready
- Language-aware code blocks
-
Todo Integration
- Multi-select prompt after review
- Select specific issues or use shortcuts (All, Critical+Major only)
- Creates properly formatted todos via TodoWrite
-
Issue Categories
- 🔥 Critical: Production killers
- ⚠️ Major: Serious problems
- 📜 Standards: Technical.md violations
- 📋 Code Smell: Maintainability issues
- 🤔 Edge Case: Unhandled scenarios
- 💭 Architectural: Design concerns
-
Deep Review Agent
- Subagent for complex changes spanning multiple domains
- Returns structured JSON for main skill to format
- Applies same standards and categorization
Notes
- Built on the Radical Candor framework by Kim Scott
- Command:
/candid-review