plugins/dev-tools/skills-codex/sequential-thinking/SKILL.md
Structured stepwise reasoning with explicit revisions and branches. Use when the user says "think step by step", "sequential thinking", "plan this out", "reason through this", "branch this idea", or when tackling a hard multi-step problem (architecture decisions, ambiguous bugs, multi-constraint tradeoffs, plans that may need revision). NOT for trivial lookups, single-tool fetches, or tasks the model can answer directly without planning.
npx skillsauth add alexei-led/claude-code-config sequential-thinkingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Replaces the sequential_thinking MCP server. Same intent — externalize a numbered chain of thoughts with revision and branch semantics — implemented as visible Markdown so any reasoning-capable model (Claude 4.x extended thinking, Gemini 3.x thinking, GPT-5.x reasoning) can follow it without an extra tool round-trip.
If none of these hold, answer directly — protocol overhead on a simple question wastes tokens and looks performative.
Modern reasoning models already think internally. They don't need to be taught to reason; they need a shared on-the-page format so:
Do not try to suppress, expose, or paraphrase the model's hidden reasoning trace. Use this protocol in addition to it — write the durable, reviewable summary as Thought blocks; let the internal trace stay internal.
Open with a one-line plan, then emit numbered Thought blocks. Use these exact markers so output is parseable:
**Plan:** N thoughts (estimate). Subject: <one-line problem statement>.
### Thought 1
<the step — observation, deduction, sub-decision, or question>
### Thought 2
<...>
### Thought 3 (revises 1)
<corrected version, with one sentence on why 1 was wrong>
### Branch A from 2
<alternative path>
### Thought 4 (Branch A)
<continuation of A>
### Thought 5 (main)
<continuation of the main line>
### Final
<the conclusion or recommendation. Names the winning branch if any.>
(revises N) declares which thought it supersedes.Branch <letter> from <N>. Subsequent thoughts on that branch tag themselves (Branch <letter>). The default trunk needs no tag.Plan: is an estimate, not a contract. If you need more thoughts, write ### Thought N (extending plan to M) and continue. Don't pretend you knew all along.### Final. Without it, callers can't tell whether you finished or got cut off.When a thought references the codebase, cite path:line (or quote the relevant snippet). When a thought rests on an unverified assumption, prefix it ASSUMPTION: so revision can target it later. Do not invent file paths or function signatures to make a step sound concrete — an unsupported step is worse than no step.
### Final)Run a brief checklist in the last numbered thought:
(revises N) marker fixing it?If any check fails, add one more Thought to address it before writing Final.
Plan: 4 thoughts. Subject: pick auth strategy for the new internal dashboard.
Thought 1
Existing services use OIDC via the company IdP (
infra/auth/oidc.go:42). Reusing it avoids a new identity surface.Thought 2
Dashboard needs short-lived tokens for embedded widgets. OIDC ID tokens are 1h; refresh is browser-side. ASSUMPTION: widgets stay in the same origin.
Branch A from 2
Service-to-service: signed JWT minted by the dashboard backend, 5min TTL. Avoids browser refresh edge cases for widgets.
Thought 3 (Branch A)
Backend already has the signing key from
internal/jwt/signer.go:18. No new infra. Tradeoff: widgets can't run as the user, only as the dashboard.Thought 4 (revises 2)
Re-checked: widgets DO call user-scoped APIs. Branch A breaks that.
Thought 5
Verification: conclusion (stay on OIDC) follows from Thought 4; Branch A explicitly rejected; recommendation named.
Final
Use OIDC end-to-end. Add a 5min cached token endpoint for widgets so each widget doesn't trigger its own refresh. Touch points:
internal/auth/,web/widgets/token.ts.
Six blocks beats six paragraphs because every step has a number a reviewer can point at.
If a thought reveals the question was wrong (wrong scope, missing requirement, blocked by an unknown), write one more Thought summarising the blocker, then ### Final stating "blocked: <reason>, need <thing>". Don't keep generating thoughts to look thorough — half-finished structured reasoning is fine; pretending to finish is not.
### Final and then continuing with more thoughts. Final is terminal.(revises N) to extend a thought instead of correct it. New direction = new thought, not a revision.tools
Idiomatic shell development for POSIX sh, Bash, Zsh, Fish, hooks, CI shell steps, and scriptable CLI glue. Use when writing or changing `.sh`, `.bash`, `.zsh`, `.fish`, `.bats`, shell functions, shell pipelines, or command-runner recipes. Emphasizes portability, quoting, safe filesystem/process handling, non-TUI CLI tools, ShellCheck, shfmt, Bats, and ShellSpec. NOT for Python, TypeScript, Go, web code, or infrastructure operations.
tools
Use when planning, executing, checkpointing, finishing, or inspecting lightweight spec-driven work. Runs one task at a time using `.spec/` markdown files and the bundled `specctl` helper. NOT for broad product discovery beyond a short requirement interview.
testing
Author, inspect, troubleshoot, and review infrastructure across IaC, Kubernetes, cloud resources, containers, CI/CD, and Linux hosts. Use when changing Terraform/OpenTofu, Kubernetes, Helm, Kustomize, Dockerfiles, GitHub Actions, AWS, GCP, Cloud Run, BigQuery, IAM, logs, instances, or service health. NOT for deploy/apply/rollback workflows (see deploying-infra). NOT for shell scripts or generic command pipelines (see writing-shell).
development
Configure safe git workflow hygiene: pre-commit/pre-push hooks, Gitleaks secret scanning, .gitignore rules, local git config, and guardrails. Use when setting up git hooks, gitleaks/git leaks, staged pre-commit checks, pre-push validation, core.hooksPath, .gitignore, or git config best practices. NOT for creating commits (use committing-code), cleaning branches/worktrees (use cleanup-git), or creating worktrees (use using-git-worktrees).