Plan mode, but actually good. Spec Mint Core replaces ephemeral AI coding plans with persistent, resumable specs built through deep research and iterative interviews.
What's inside
FAQ
specmint-core is a Claude Code plugin with 1 hand-picked skill for documentation work, indexed on Flowy. Install it with the command on its page. It includes specmint-core. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
$ npx -y skills add ngvoicu/specmint-core --agent claude-code
Repo: ngvoicu/specmint-core
Plan mode, but actually good.
Spec Mint Core replaces ephemeral AI coding plans with persistent, resumable specs built through deep research and iterative interviews. Create a spec, work through it task by task, pause, switch to another spec, come back a week later and pick up exactly where you left off.
Works with Claude Code, Codex, Cursor, Windsurf, Cline, Gemini CLI, and any AI coding tool that can read files โ installed as a universal skill.
Every AI coding tool has some version of "plan mode" โ think before you code. But these plans are ephemeral. They live in the conversation context. Close the terminal, start a new session, and the plan is gone. There's no way to:
Spec Mint Core fixes all of this.
Tell your AI tool to "forge a spec for user authentication with OAuth" and Spec Mint Core takes over:
1. Deep Research โ Exhaustive codebase scan (reads 10-20+ actual files, not just file names), web search for best practices, Context7 library docs, library comparisons, cross-skill research (frontend-design, datasmith-pg, etc.), UI inspection if applicable. Everything saved to .specs/<id>/research-01.md.
2. Interview โ Presents findings, states assumptions, asks targeted questions informed by the research. Not generic questions โ specific ones like "I see you're using Express middleware pattern X in src/middleware/. Should the auth middleware follow the same pattern?" Saves answers to interview-01.md.
3. Deeper Research โ Investigates the specific directions from the interview. Checks feasibility, finds edge cases.
4. More Interviews โ As many rounds as needed until every task in the spec can be described concretely. No ambiguous "figure out X" tasks.
5. Write Spec โ Synthesizes all research and interviews into a comprehensive SPEC.md with architecture diagrams (ASCII/Mermaid), library comparison tables, phases, tasks, testing strategy, a decision log, and resume context. Runs a coherence and logic review before presenting.
6. Implement โ Works through the spec task by task during implementation, checking them off, updating progress, logging new decisions, writing tests as specified in the testing strategy.
Specs live in .specs/ at your project root โ plain markdown with YAML frontmatter. They diff cleanly in git, are readable in any editor, and work with any AI tool.
.specs/
โโโ registry.md # Denormalized index for status/progress lookups
โโโ user-auth-system/
โโโ SPEC.md # The spec document
โโโ research-01.md # Initial codebase + web research
โโโ interview-01.md # First interview round
โโโ research-02.md # Follow-up research
โโโ interview-02.md # Second interview round
SPEC.md frontmatter is authoritative. .specs/registry.md is a
denormalized index for quick lookups.
For this specmint-core repository, .specs/ is intentionally gitignored for
local dogfooding. In consumer projects, you can choose to commit .specs/.
---
id: user-auth-system
title: User Auth System
status: active
created: 2026-02-10
updated: 2026-02-11
priority: high
tags: [auth, security, backend]
---
# User Auth System
## Overview
Add JWT-based authentication with OAuth (Google, GitHub) to the Express
API. Uses the existing middleware pattern in src/middleware/.
## Phase 1: Foundation [completed]
- [x] [AUTH-01] Set up auth middleware in src/middleware/auth.ts
- [x] [AUTH-02] Create User model with Prisma schema
- [x] [AUTH-03] Implement JWT generation and verification in src/auth/tokens.ts
- [x] [AUTH-04] Add refresh token rotation
## Phase 2: OAuth Integration [in-progress]
- [x] [AUTH-05] Google OAuth provider
- [ ] [AUTH-06] GitHub OAuth provider โ current
- [ ] [AUTH-07] Token exchange flow for both providers
## Phase 3: Testing & Hardening [pending]
- [ ] [AUTH-08] Unit tests for auth middleware
- [ ] [AUTH-09] Integration tests for OAuth flow
- [ ] [AUTH-10] Rate limiting on auth endpoints
---
## Resume Context
> Finished Google OAuth. GitHub OAuth callback handler is in progress at
> `src/auth/oauth/github.ts`. The authorization URL redirect works but
> the callback endpoint at `/auth/github/callback` needs to exchange the
> code for tokens. Use the same pattern as Google in `src/auth/oauth/google.ts`
> lines 45-82. The GitHub OAuth app credentials are in `.env` as
> GITHUB_CLIENT_ID and GITHUB_CLIENT_SECRET.
## Decision Log
| Date | Decision | Rationale |
|------|----------|-----------|
| 2026-02-10 | JWT over sessions | Stateless, scales for microservices |
| 2026-02-10 | Refresh token rotation | Limits damage from stolen tokens |
| 2026-02-11 | Prisma over raw SQL | Already used in the project for other models |
## Deviations
| Task | Spec Said | Actually Did | Why |
|------|-----------|-------------|-----|
| AUTH-05 | Use passport.js | Direct googleapis calls | Simpler for a single provider, avoids passport session overhead |
Spec Mint Core installs as a universal skill โ one command, and it works in Claude Code, Codex, Cursor, Windsurf, Cline, Gemini CLI, and any AI coding tool that reads files.
# Install globally (recommended)
npx skills add ngvoicu/specmint-core -g
# Or target a specific tool with -a
npx skills add ngvoicu/specmint-core -g -a claude-code
npx skills add ngvoicu/specmint-core -g -a codex
npx skills add ngvoicu/specmint-core -g -a cursor
npx skills add ngvoicu/specmint-core -g -a windsurf
npx skills add ngvoicu/specmint-core -g -a cline
npx skills add ngvoicu/specmint-core -g -a gemini
Once installed, the skill auto-triggers on natural language โ "forge a spec for X", "what was I working on?", "implement the spec". No slash commands and no marketplace: the skill bundles the full spec workflow, the deep-research subagent brief (references/researcher.md), and the spec format reference.
Windsurf: replace the symlink at
.windsurf/skills/specmint-core/SKILL.mdwith a real file copy โ Cascade doesn't follow symlinks.
Talk to your AI tool in plain language โ the skill recognizes the spec lifecycle and runs the right workflow:
| Goal | Say something like |
|---|---|
| Start a new spec | "forge a spec for user authentication" |
| Implement it | "implement the spec" ยท "implement phase 2" ยท "implement all phases" |
| Resume where you left off | "what was I working on?" ยท "resume" |
| Pause and save context | "pause the spec" |
| Switch active spec | "switch to the api-refactor spec" |
| List all specs | "list my specs" |
| Show progress | "spec status" |
| Generate API docs | "generate openapi" |
Every action reads and writes plain files under .specs/ โ research notes, interviews, SPEC.md, and a registry.md index. Any tool that can read files shares the same .specs/ directory, so you can forge in one tool and implement in another.
Not a quick scan. The researcher reads 10-20+ files, following dependency chains, checking tests, examining config. Uses every available resource: web searches for best practices, Context7 for library docs, library comparisons, cross-skill research (frontend-design, datasmith-pg, etc.).
Output saved to .specs/<id>/research-01.md. Covers:
Targeted questions based on what research found. Not generic "what do you want?" โ specific questions like:
src/middleware/rateLimit.ts. Should auth endpoints use the same limiter or a stricter one?"AuthToken model?"Multiple rounds (typically 2-5) until every task can be described concretely. Each round saved to interview-01.md, interview-02.md, etc.
Synthesizes everything into a comprehensive SPEC.md:
Works through the spec task by task during implementation:
โ current as they start- [x] when doneSpec Mint Core replaces Claude Code's built-in plan mode. The forge workflow IS your planning phase โ deep research, interviews, spec writing. You don't need plan mode at all.
If you happen to be in plan mode when you ask to forge a spec, Spec Mint Core asks you to exit plan mode first (Shift+Tab), then start the forge workflow again.
specmint-core/
โโโ SKILL.md # Universal skill (works with all tools)
โโโ skills/
โ โโโ specmint-core/
โ โโโ SKILL.md # Symlink to ../../SKILL.md (skills-CLI discovery)
โโโ references/
โ โโโ researcher.md # Deep-research subagent brief
โ โโโ spec-format.md # SPEC.md format specification
โ โโโ command-contracts.md # Behavioral contract checklist for the skill
โโโ README.md
โโโ LICENSE
Full specification in references/spec-format.md.
Behavioral guardrails in
references/command-contracts.md.
| Field | Required | Description |
|---|---|---|
id | Yes | URL-safe slug (e.g., user-auth-system) |
title | Yes | Human-readable name |
status | Yes | active, paused, completed, archived |
created | Yes | ISO date (YYYY-MM-DD) |
updated | Yes | ISO date of last modification |
priority | No | high, medium, low (default: medium) |
tags | No | YAML array |
[pending], [in-progress], [completed], [blocked][PREFIX-NN] โ unique per task, auto-incrementing across phases- [ ] [AUTH-01] unchecked, - [x] [AUTH-01] doneโ current after the task text[NEEDS CLARIFICATION] after the task code on unclear tasksSpec Mint Core has been iteratively developed and evaluated using Anthropic's Skill Creator โ the official tool for building, testing, and benchmarking Claude Code skills.
Each iteration was validated through parallel eval runs (with-skill vs without-skill baselines), automated assertion grading, and quantitative benchmarking across multiple test scenarios โ forge workflow fidelity, interview gating, research depth, research subagent spawning, spec quality, and implementation tracking.
Latest benchmark (iteration 5):
| Config | Pass Rate |
|---|---|
| With Skill | 100% (18/18 assertions) |
| Without Skill | 61% (11/18 assertions) |
| Delta | +39% |
For more on how Skill Creator works โ evals, A/B comparisons, benchmarking, and the iteration loop โ see Improving skill-creator: Test, measure, and refine Agent Skills.
Plan mode is a good idea with a bad implementation. It restricts Claude to read-only tools and asks for a plan. That's it. No persistence, no research depth, no interviews, no progress tracking.
Spec Mint Core's forge workflow does what plan mode should do:
Spec Mint Core reads your codebase. Kluris gives your agents the other half โ the tribal knowledge that never made it into comments: architecture decisions, past incidents, vendor quirks, the "why" behind every weird choice.
Pair them and the forge workflow's Phase 1b (research) stops guessing. It consults the brain first.
Inside your AI coding agent:
> write a spec for OAuth sign-in with GitHub โ check the brain, the codebase, and the web
research ยท phase 1a ยท reading codebase ........ done
research ยท phase 1b ยท kluris wake-up ........... done
research ยท phase 1c ยท synthesis ............... done
> spec written to .specs/oauth-github.md โ ready for interview.
The spec lands grounded in both the code and the knowledge your team already agreed to โ no re-litigating decisions made six months ago.
Why it works:
Install Kluris:
pipx install kluris
kluris wake-up
Full setup at kluris.ngvoicu.dev.
MIT
This project is part of a larger AI-native toolkit โ and of a way of working your whole team can adopt: talks ("Becoming an AI Native Company"), hands-on team training that teaches employees to use AI, and AI adoption consulting for engineering teams.
Toolkit: Specmint (durable AI coding specs) ยท Kluris (team knowledge brains) ยท ConsensFlow (cross-agent second opinions)
.gitignore
AGENTS.md
CLAUDE.md
LICENSE
README.md
references/
command-contracts.md
researcher.md
spec-format.md
SKILL.md
skills/
specmint-core/
SKILL.mdยฉ 2026 Flowy ยท Free and open source
Built for Claude Code ยท Not affiliated with Anthropic