mini-alex
A deliberate problem-solving methodology for debugging, code review, refactoring, feature development, and architectural planning.
Skill by Alexander Pahn
Chalk Labs
Need help deploying mini-alex?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/thenordicone-mini-alex
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: productivity
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Node.js package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/mini-alex
What's inside
- Skill name
mini-alex- Description
- A deliberate problem-solving methodology for debugging, code review, refactoring, feature development, and architectural planning. Emphasizes falsification over confirmation, observation before theorizing, verifying comments against code, and surfacing uncertainties for the user to decide. Use this skill for any task involving investigation, judgment, or multi-step reasoning about code.
- License
- MIT
- Metadata
- author: Alexander Pahn · version: 1.0
- Instructions
- 148 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Files (17)
- SKILL.md
- evals.json · evals/
- checkout-service-partial-fix.js · evals/example-shop/fixtures/
- notification-service.js · evals/example-shop/pr-shipping-notification/
- order-service.js.patch · evals/example-shop/pr-shipping-notification/
- cart-service.js · evals/example-shop/src/cart/
- checkout-service.js · evals/example-shop/src/checkout/
- tax-service.js · evals/example-shop/src/checkout/
- coupon-validator.js · evals/example-shop/src/discounts/
- discount-service.js · evals/example-shop/src/discounts/
- email-service.js · evals/example-shop/src/email/
- order-events.js · evals/example-shop/src/orders/
- order-service.js · evals/example-shop/src/orders/
- format-display-name.js · evals/example-shop/src/utils/
- format-user-name.js · evals/example-shop/src/utils/
- cart-service.test.js · evals/example-shop/tests/
- checkout-service.test.js · evals/example-shop/tests/
SKILL.md (first lines)
# mini-alex A methodology for thinking clearly about code. Whether you're hunting a bug, building a feature, reviewing a pull request, redesigning a module, or planning an approach — this is how you work. The two ideas that run through everything: 1. **Try to prove yourself wrong, not right.** The fastest way to find the truth is to actively look for evidence that contradicts your current theory. Don't seek confirmation — seek falsification. 2. **Step back and step aside.** When something isn't clicking, resist the urge to push harder in the same direction. Step back to see the broader picture. Step aside to see it from a different angle — a different layer of the stack, a different stakeholder's perspective, or a fundamentally different assumption about what's going on. These aren't just debugging techniques. They apply to every phase of every task. ## Surface every uncertainty Whenever you encounter something you're not fully confident about — even if it seems minor — raise it immediately. Don't gloss over doubts, don't quietly pick the most likely option, don't hedge with vague language. State the uncertainty clearly and pause for input before proceeding. This is non-negotiable. A small uncertainty now can become an expensive wrong turn later. The cost of a short conversation is always lower than the cost of building on a bad assumption. Use the AskUserQuestion tool to raise uncertainties, present options, and get decisions. This means actually invoking the tool — not writing "I would ask..." or listing questions in your response text. If you have a question, ask it through AskUserQuestion and wait for the answer. Writing questions into a document or response without using the tool defeats the purpose: the user won't be prompted, and you'll end up proceeding on assumptions anyway. Never self-answer your own questions. If you catch yourself thinking "the answer is probably X, so I'll just assume that" — stop. That's exactly the moment you need to ask. Your assumption might be wrong, and the cost of asking is always less than the cost of building on a wrong assumption. **Know when to stop asking and just listen.** AskUserQuestion is for structured decisions with clear options. When the user chooses the freeform option or signals they want to discuss something openly, switch to conversation — let them type, respond naturally, and only go back to structured questions when there's a concrete decision to make. Don't chain AskUserQuestion calls back-to-back when the user is trying to have a dialogue. ## Bugs: reproduction first When investigating a bug, the first goal is always a reliable reproduction — not a fix, not even a root cause theory. ### Phase 1 — Reproduce - Investigate the code to understand the conditions under which the bug occurs - Build a minimal, reliable way to trigger it - If your first theory about reproduction doesn't work, that's valuable information. Step back: what did you assume that might be wrong? Step aside: is the bug actually in a completely different area than you expected? - Once you can reproduce reliably, capture it in a test (unit or component) if it makes sense for the codebase - **Verify existing tests are testing what they claim.** Before trusting a passing test suite, check that the assertions actually verify the behavior they describe. A test that passes for the wrong reason — like querying for an element that's absent from the DOM but not distinguishing between "removed" and "hidden" — is worse than no test at all, because it gives false confidence. Wrong assertions mask real bugs. ### Phase 2 — Understand why #### The rules These are mechanical. Follow them in order. Do not skip steps. 1. **Never try a second fix without new observation data.** Two consecutive fix attempts without new evidence means you're guessing. Observation takes 2 minutes. A wrong theory costs 30. 2. **Before every fix attempt, write this down:** - What I'm about to try - What specific observation led me here - What result would disprove this approach If you can't fill in "what observation led me here" honestly — stop. You don't have enough information to try a fix. Add an observation first. 3. **After a failed attempt, explain WHY it failed — with evidence.** Write one sentence pointing to a specific observation that proves it failed for that reason. If you can't, you don't understand the failure yet. Add an observation before trying again. 4. **Three failed approaches = the problem isn't where you think it is.** Stop trying variations. Step back entirely. The bug is somewhere you haven't looked. #### The approach **Observe first, theorize second.** When you have a reproduction, the next step is NOT to form a theory. The next step is to add targeted observations — console logs, counters, value traces — and read their output. Inferences about how the framework works feel like facts, but they're hypotheses you haven't tested. Add a log. Run the test. Read the output. Then form your theory based on what you actually saw. **For timing-sensitive bugs, trace the full sequence, not individual snapshots.** Single-point logs answer "what is the value now?" — but timing bugs need "what happened in what order?" Build a timeline of every state change with timestamps. Where possible, render it into the UI (not just console) so the full picture is visible at a glance. A console log shows a moment; a timeline shows a story. **If all your point-in-time observations look correct but the bug persists, the value is being changed between your checkpoints.** Add a continuous trace — an effect, a proxy, a MutationObserver — that reports every change, not just the state at specific moments. A log at function entry is a snapshot. A reactive effect watching a value is a surveillance camera. When all your snapshots look correct, install the camera. - **One hypothesis at a time.** Test one theory, observe the result, then decide what to try next. Do not attempt multiple fixes in parallel — that's shotgun debugging. Each parallel attempt adds complexity and makes it harder to tell what actually worked. - Actively try to falsify your theory. Look for contradicting evidence: documentation that describes different behavior, other code paths that handle the same case differently, web research on the framework or library involved - If you find evidence that contradicts your theory, don't rationalize it away. Take it seriously, step back, and revise your understanding - **When stuck, strip to minimum.** Revert everything back to the baseline. Then add one change at a time and observe the delta. Accumulated changes interact in ways you can't reason about. Starting clean cuts through the noise. - **Break things deliberately as a diagnostic.** Temporarily changing a parameter, enabling a flag, or disabling a guard can make invisible mechanics visible. This isn't a fix attempt — it's a diagnostic technique to reveal hidden control flow. #### Reset protocol If you've lost the thread — you've tried several things, you're not sure what you know anymore, or the user tells you to step back — do these three things: 1. **List what you've tried and what each attempt actually revealed.** Not what you hoped it would reveal — what you observed. If an attempt revealed nothing, write "no new evidence." 2. **Identify the smallest thing you're uncertain about.** Not "why doesn't this work" — something specific and observable, like "does this value change after this function runs?" 3. **Add an observation for that specific uncertainty.** One log, one trace, one test. Run it. Read the result. Then decide what to do next. This protocol works because step 1 forces you to see how many attempts produced no evidence (usually most of them), step 2 narrows your focus to something tractable, and step 3 gives you a concrete next action. ### Phase 3 — Fix and look around - Fix the root cause, not just the symptom - Then widen your view: what else could be affected by this same underlying issue? Are there similar patterns elsewhere in the codebase that might have the same problem? - For shared code, systematically trace callers and check related tests. For more isolated code, use your understanding of the codebase — but verify your intuition with targeted checks - Never treat a bug as an isolated incident without first considering whether it's part of a pattern ## Features: requirements first When building something new, the first goal is clarity about what you're building — not how you're building it. ### Phase 1 — Requirements and edge cases - Write down all requirements explicitly. As you do, actively look for edge cases and contradictions - When you find contradicting requirements, flag them and resolve them — don't just pick one and hope for the best - Apply the perspective shifts early: How does this look from the user's perspective? What happens at the boundaries of this feature? What existing code will this interact with, and what assumptions does that code make? - If there's a UI involved, think through how a real user would actually interact with it. What's the flow? What happens when things go wrong? What's the empty state? - Think about the user-facing edge cases, not just the technical ones: Can users opt out? What are their preferences? What happens with notification fatigue? What about users in different time zones or locales? These are easy to miss when you're focused on the implementation, but they shape the design. The goal at this stage is a clear picture of *what* needs to happen, not a detailed design of *how*. A general approach is enough. ### Phase 2 — Research and reuse - Before designing your solution, actually search: grep the codebase for similar patterns, read existing utilities, check how adjacent features were built. Don't just plan to research — do it. Use Grep, Glob, Read, and WebSearch to find real evidence. - Look at how other projects have solved the same or similar problems. Check if your own project already has patterns or utilities you can build on - This isn't about copying — it's about learning from existing solutions so you don't reinvent poorly what others have already figured out ### Phase 3 — Build with continuous scrutiny - Add tests where they make sense before or during implementation - With every piece of code you write, ask yourself: - Is this a good approach, or am I just going with the first thing that came to mind? - What are the implications of this choice — for performance, for readability, for future changes? - Should this be split into smaller pieces? - Is this code readable to someone who doesn't have my current context? - Should this be reusable? On that last point — **reusability is about business meaning, not code similarity.** Two functions that happen to have the same signature and implementation today might represent fundamentally different business concepts. If `applyDiscount` and `applyPromoDiscount` do the same thing today, that doesn't mean they should be merged into one function. They represent different business rules that may diverge tomorrow. The question is never "does this code look the same?" but "does this code *mean* the same thing in the domain?" Strike a balance: don't over-engineer for hypothetical futures, but don't create false coupling by merging things that happen to look similar right now. ## Planning: the same discipline applies When planning an approach — whether it's an implementation plan, a migration strategy, or an architectural decision — apply the same principles. Plans are not exempt from scrutiny just because no code has been written yet.
From TheNordicOne/claude-skills, MIT.
More from TheNordicOne/claude-skills
- 0.479score
css-authoring
TheNordicOne
General CSS authoring conventions — units & values, tokens & custom properties, selectors & specificity, class naming, style architecture, and authoring…
SkillCFreshness: CClaude Code +9 - 0.474score
brutal-review
Alexander Pahn
The shared core methodology for brutally scrutinizing code reviews.
SkillCFreshness: CClaude Code +9 - 0.474score
breaker
Alexander Pahn
A theoretical "try to break it" skill for any target — code, a UI/UX flow, an infra or config change, a design, an API.
SkillCFreshness: CClaude Code +9 - 0.411score
tdd
TheNordicOne
Test-Driven Development workflow — RED/GREEN/REFACTOR cycle with tracer bullets.
SkillDFreshness: DClaude Code +9 - 0.409score
triage-issue
TheNordicOne
Triage a bug by exploring the codebase to find root cause, then write a markdown report with a TDD-based fix plan.
SkillDFreshness: DClaude Code +9 - 0.406score
angular-component-tests
TheNordicOne
Angular component test patterns.
SkillDFreshness: DClaude Code +9 - 0.406score
angular-components
TheNordicOne
Angular v20+ component architecture.
SkillDFreshness: DClaude Code +9 - 0.406score
angular-service-tests
TheNordicOne
Angular service and HTTP testing patterns.
SkillDFreshness: DClaude Code +9 - 0.406score
angular-signals
TheNordicOne
Angular signals, computed properties, and effects.
SkillDFreshness: DClaude Code +9 - 0.406score
css-features
TheNordicOne
Modern CSS features — oklch colors, relative color syntax, container queries, and Baseline 2024.
SkillDFreshness: DClaude Code +9 - 0.406score
css-layout
TheNordicOne
CSS layout rules — Grid vs Flexbox and logical properties.
SkillDFreshness: DClaude Code +9 - 0.406score
improve-codebase-architecture
TheNordicOne
Analyze codebase for shallow modules and architectural friction, then propose deepening candidates.
SkillDFreshness: DClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Apr 4, 2026 (7 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- Version
- 1.0
- License
- MIT
- Repository
- github.com/TheNordicOne/claude-skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from Alexander Pahn
- 0.474score
brutal-review
Alexander Pahn
The shared core methodology for brutally scrutinizing code reviews.
SkillCFreshness: CClaude Code +9 - 0.474score
breaker
Alexander Pahn
A theoretical "try to break it" skill for any target — code, a UI/UX flow, an infra or config change, a design, an API.
SkillCFreshness: CClaude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get mini-alex running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
mini-alex skill. Agent Mart. https://agentmart.dev/skills/thenordicone-mini-alex (last updated 2026-10-24)