Tari Ibaba

Tari Ibaba is a software developer with years of experience building websites and apps. He has written extensively on a wide range of programming topics and has created dozens of apps and open-source libraries.

How Claude Code’s /goal command fixes bugs and saves you hours

/goal is a powerful Claude Code command that makes your agent much more reliable and frees up the time you have spend watching over them.

It lets you give Claude an end state and have it keep working until it gets there.

Instead of prompting Claude one turn at a time and checking if it has achieved the results you want, you can define a clear result:

Plain text
/goal all tests in test/auth pass and lint is clean.

Claude then works across multiple turns. It tests its changes, responds to failures and keeps going until the goal is met or it needs you to step in.

This makes Claude Code much more useful for longer tasks like debugging, refactoring and migrations — you spend less time managing the agent and more time on higher-value work.

1. Goal-oriented execution: Spend less time supervising the agent

A normal coding-agent session often looks like this:

Plain text
Prompt → Work → Stop → Continue → Work → Stop

/goal changes the loop:

Plain text
Goal → Work → Evaluate → Continue → Evaluate → Done

Claude checks the goal after each turn. If it has not reached the goal it keeps working.

This works well for migrations, refactors and test fixes — tasks that often need several attempts.

You free up your time as you no longer have to constantly supervise the mode. You define the outcome and spend more time on architecture, reviews or other work.

The key is to define a clear finish line:

Plain text
/goal all authentication tests pass, lint is clean and public APIs remain unchanged

You define where Claude needs to get — Claude works out the steps.

2. Evidence-based verification: Know that “done” really means done

More autonomy creates a problem. What stops Claude from deciding that the work is complete too early?

/goal separates doing the work from checking it.

The main Claude model writes code and uses tools. After each turn a smaller model checks whether the goal has been met.

It can use evidence surfaced during the session:

Plain text
42 tests passed 0 failed npm run lint

Process exited with code 0

That is stronger than Claude simply saying the problem should now be fixed.

The evaluator does not run commands itself — it checks the evidence already available in the conversation.

This creates a stronger definition of “done” for you. Tests, compiler output and command results can show that the work actually meets the goal.

3. Continuous self-correction: Debug for longer without stepping in

Most bugs do not disappear after the first fix.

Claude might change some code and run the tests. Three fail.

With a normal session it may stop and wait for another prompt.

With /goal those failed tests show that the goal is incomplete — so Claude can keep working.

Plain text
Change → Test → Observe → Evaluate → Adapt → Test Again

Claude reads the error, changes its approach and tests again. It can also use background commands or delegated subagents during harder investigations.

For us developers this means fewer interruptions during debugging.

A bug that takes several attempts can become one continuous process — failure becomes feedback for the next attempt instead of the end of a turn.

4. Cost and quota protection: More autonomy without runaway usage

Continuous execution also creates risk.

If Claude gets stuck it could keep trying similar solutions while using more tokens.

Claude Code includes safeguards for this. It can detect several turns without useful tool activity or progress — then stop and return control to you the developer.

Goal checks also use a smaller and faster model by default.

So Claude Code can use the more capable model for engineering work — then use a cheaper model to check whether that work is complete.

You get more autonomy without giving the agent an unlimited license to keep running when progress stalls.

5. Session persistence: Hand off work that takes longer

Not every engineering task fits into one sitting.

Claude Code lets you resume sessions with commands like claude --continue and --resume. Active /goal state can carry into the resumed session.

If your goal was:

JavaScript
/goal all acceptance criteria are implemented and the payment tests pass

Claude can return to that same finish line later.

This makes /goal useful for larger migrations, implementations and debugging sessions — not just quick tasks.

More broadly, /goal changes how developers work with coding agents.

Instead of managing each step: Fix this, Run the tests, Try again, Continue… you define the outcome:

Here is the state I want.

Here is how we know it works.

Keep going until that is true.

You define the finish line — Claude finds the path.

How Claude Code’s /goal command fixes bugs and saves you hours Read More »

.claudeignore doesn’t exist. This is how you actually ignore files with Claude Code

It’s incredible how many people don’t realize this — there is no .claudeignore file. Claude Code does not natively recognize any such file.

And even your .gitignore is not as strictly respected as you might think — there are much stronger ways to reliable ignore files and avoid revealing sensitive information and wasting tokens on irrelevant file data.

Yes we already have .dockerignore and .npmignore and other kinds of .[x]ignore — so it sounds like .claudeignore is a real thing.

But it really isn’t.

But this misconception has spread across the internet — even models like Claude have recommended a .claudeignore file even though it doesn’t do anything.

And what’s the problem with .gitignore?

Claude Code does respect .gitignore for some file discovery.

It can hide ignored files from things like @-mention autocomplete. Claude Code also has settings that control whether tools like Glob respect .gitignore.

This helps keep things like node_modules, build files and other junk out of normal searches.

But .gitignore does not stop Claude from reading those files directly.

If you tell Claude to “read .env” or “check dist/output.log” it can still try to read them.

Claude can accidentally read sensitive files like API keys and production credentials. It can also read huge ignored files like logs or generated output. That can waste a lot of tokens and fill the context window with useless data.

So .gitignore can help with file discovery. It does not give you a hard security barrier.

How to actually make Claude ignore files

There are three good ways to do it.

1. Block sensitive files with .claude/settings.json

If Claude should never read a file then use its permission system.

Add rules like these to .claude/settings.json:

JavaScript
{   "permissions": {     "deny": [       "Read(.env*)",       "Read(*.key)",       "Read(config/secrets/**)"     ]   } }

These rules can stop matching tool calls instead of simply asking Claude to behave.

This is what you want for .env files, private keys and other secrets.

Just remember that Claude can use other tools too. If you let it run Bash then a command like cat .env creates another way to read the file. For important secrets you should lock down every path that could expose them.

2. Use CLAUDE.md (or AGENTS.md) for files that waste context

Not every file needs a hard block.

Maybe you just don’t want Claude wasting tokens reading build files, logs or dependencies.

In that case add simple rules to CLAUDE.md:

Plain text
## Context & File Rules - Do not read files inside `dist/`, `build/` or `node_modules/`. - Ignore `.log` files unless I ask you to read them.

Claude Code reads CLAUDE.md as project instructions.

This works well for context management. But it’s still an instruction to Claude. It does not block the file at the tool level.

3. Use a PreToolUse hook

If you really want .claudeignore then you can make it work with a hook.

Community tools like claude-ignore use Claude Code’s PreToolUse hooks. The hook checks a file path before Claude reads it. It compares the path against patterns in .claudeignore and blocks the tool call when it finds a match.

So .claudeignore can work.

But only when you install something that actually reads and enforces it.

The easiest way to think about all of this is:

.gitignore helps with discovery. CLAUDE.md tells Claude what to avoid. permissions.deny actually blocks tool access. Hooks let you build custom ignore rules.

But .claudeignore on its own?

Don’t trust it.

That’s what makes this whole thing so interesting. People and AI made up assumptions of a feature that sounded so real that developers started using it and telling other people to use it too.

When secrets are involved you can’t rely on something just because Claude says it exists.

Make sure something actually enforces it.

.claudeignore doesn’t exist. This is how you actually ignore files with Claude Code Read More »

How the I Have ADHD Skill saves tokens & boosts your productivity

This Skill is a game changer for Claude Code.

The I Have ADHD Skill massively upgrades the quality and clarity of Claude’s responses by encouraging it to communicate in a much more direct, structured, and action-oriented way.

It removes all the fluff and goes straight to the point — saving you so much token costs and improving your mental model of the task at hand — which let’s you move faster and get things done.

The crucial problem it’s here to solve

AI coding assistants often answer simple questions with long explanations before getting to the solution.

That style can be useful for learning — but when you’re debugging, shipping features, or reviewing code, it creates unnecessary friction.

The “I Have ADHD” skill solves that by encouraging Claude to prioritize the next action instead of lengthy context.

How the Skill works

The skill dramatically changes how Claude structures its responses.

Instead of long introductions, it’s encouraged to:

  • Start with the immediate next step.
  • Break work into numbered tasks.
  • Remove unnecessary filler.
  • Show progress throughout a task.
  • Finish with one clear next action.

You end up getting an AI that isn’t just intelligent, but also extremely easy to work with.

Why so many developers love it

The project quickly gained over 10,000 stars on GitHub within days of launch.

Because it addresses a frustration many developers have long had with AI assistants: too much explanation and not enough execution.

Whether you’re debugging, refactoring, or navigating a new codebase, concise responses reduce cognitive load and help you stay focused.

How to get started with the I Have ADHD skill

Install it easily with these commands:

JavaScript
claude plugin marketplace add ayghri/i-have-adhd claude plugin install i-have-adhd@i-have-adhd

Then type /i-have-adhd in a Claude Code session to activate it — all the responses will be structured according to the rules of the skill for the rest of the session:

How to use it to transform your workflow (5 practical use cases)

1. Debugging production issues

Without the skill

Plain text
There are several reasons your API could be returning a 500 error. Let's begin by understanding how Express middleware works before we explore possible causes...

With the skill

Plain text
1. Check server logs. 2. Verify DATABASE_URL. 3. Run:    curl http://localhost:3000/health 4. Report the output.

Why it matters: When production is down, you need the next action — not a lesson.

2. Refactoring legacy code

Without the skill

Plain text
There are multiple approaches to refactoring this codebase. Before making changes, let's discuss architecture, design patterns, and technical debt...

With the skill

Plain text
Plan: ✓ Identify dead code ✓ Extract duplicate logic □ Add tests □ Rename interfaces Current step: Extract duplicate validation logic.

Why it matters: Breaking work into milestones makes large refactors feel manageable.

3. Building large features

Without the skill

Plain text
Let's build a complete authentication system. First, here's the architecture... [Hundreds of lines covering models, JWTs, middleware, RBAC, testing, deployment, and security.]

With the skill

Plain text
Phase 1 ✓ User model ✓ Login endpoint Phase 2 □ JWT middleware □ Refresh tokens Phase 3 □ Role middleware □ Permissions

Why it matters: You stay focused on one phase instead of being overwhelmed by the entire implementation.

4. Learning an unfamiliar codebase

Without the skill

Plain text
This project uses a layered architecture with controllers, services, repositories, middleware, utilities, shared modules, and configuration files... Let's walk through every directory.

With the skill

Read these first:

Plain text
1. routes.ts 2. auth.ts 3. middleware.ts Ignore everything else for now.

Why it matters: You can understand the project faster by focusing only on the files that matter.

5. Reviewing pull requests

Without the skill

Plain text
Overall this is a solid pull request. I noticed a few issues of varying importance, so let's review each one in detail...

With the skill

Plain text
Critical - SQL injection risk Important - Missing null check Minor - Rename variable Approve after fixing the first two.

Why it matters: Prioritized feedback makes reviews quicker to understand and easier to act on.

Final thoughts

You don’t just need a smarter assistant — you need an assistant that helps you get things done faster.

Sometimes the biggest productivity improvement isn’t giving an AI more knowledge. It’s simply teaching it to get to the point.

How the I Have ADHD Skill saves tokens & boosts your productivity Read More »

5 essential Claude Code tips & tricks you should be using

These are 5 powerful tips that help you get the most out Claude in your day-to-day development.

They give Claude better context to improve code quality, help you stay in the flow to build faster, and help you avoid costly token usage.

1. Get more consistent results with CLAUDE.md

Maintaining a good CLAUDE.md is one of the highest-leverage things you can do.

Think of it as onboarding documentation for Claude. Instead of repeatedly explaining your architecture, commands, and conventions, put the important information there:

Plain text
# Commands - Tests: `pnpm test` - Type checking: `pnpm typecheck` # Conventions - Use named exports - Prefer server components - Add tests for new business logic

Keep it concise and specific. Focus on things Claude repeatedly needs: commands, architectural boundaries, conventions, testing expectations, and unusual project constraints.

You avoid repetition and improve your productivity.

What about AGENTS.md?

If you use multiple coding tools, AGENTS.md is useful for instructions you want to share across them. Claude Code now supports AGENTS.md, so if it already contains everything Claude needs, you don’t necessarily need a separate CLAUDE.md.

You can also use both:

AGENTS.md   → shared instructions

CLAUDE.md   → Claude-specific instructions

And instead of duplicating instructions, you can import AGENTS.md into CLAUDE.md:

Plain text
@AGENTS.md

# Claude-specific instructions

– Use Plan Mode for large changes.

You can import other project documentation the same way, such as @README.md or @docs/architecture.md.

2. Stay in flow by running shell commands directly

Not everything needs an AI.

Claude Code lets you execute shell commands directly by prefixing them with the ! character.

Plain text
!git status !pnpm test !git diff --stat

It’s a tiny feature, but it makes Claude Code much nicer as a terminal workflow.

A useful rule: use Claude when you need reasoning; use ! when you already know what needs to run.

3. Avoid costly wrong turns with Plan Mode

For large changes, letting an agent immediately start editing files can produce a lot of code based on a bad assumption.

Plan Mode lets Claude investigate and think through the implementation first:

/plan

A good workflow is:

Explore → Plan → Review → Implement → Verify

This is particularly useful for migrations, architectural changes, tricky bugs, and features spanning multiple parts of a codebase.

Actually read the plan before implementation. Fixing a bad assumption there is much easier than fixing it after 20 files have changed.

For small, obvious changes, skip it. Plan Mode is most valuable when the approach itself requires thought.

4. Avoid costly wrong turns with Plan Mode

Claude Code can delegate work to multiple agents, allowing independent tasks to happen simultaneously instead of sequentially.

For example:

Agent A → backend

Agent B → frontend

Agent C → tests

Agent D → documentation

This isn’t just faster. Each agent gets a narrower context and can focus on one part of the problem.

Claude can decide to delegate work itself, but you can also explicitly ask it to parallelize:

Split this into independent workstreams and use parallel agents wherever tasks don’t depend on each other.

Or:

Use three parallel agents to investigate the API, frontend, and database layers. Combine their findings before implementing the fix.

The important distinction is independence. If one task depends on another’s output, running them simultaneously can create conflicting assumptions.

Parallelize independent work; sequence dependent work.

5. Work on multiple features at once with Claude Code worktrees

Claude Code’s native worktree support lets you run isolated Claude sessions against the same repository.

Launch one with:

claude –worktree

Or name it:

claude –worktree feature-auth

Claude creates the worktree and starts the session inside it, giving the task an isolated working copy and branch.

That means you can have:

Session A → authentication feature

Session B → payment bug

Session C → dependency upgrade

all progressing without their changes colliding.

Combined with parallel agents, you get two levels of concurrency: worktrees for separate Claude Code sessions, and subagents for parallel work within a session.

Getting more from Claude Code ultimately isn’t about magical prompts. It’s about orchestrating it well: give it persistent context, plan complex work, parallelize independent tasks, isolate concurrent sessions, and use the shell directly when reasoning isn’t required.

5 essential Claude Code tips & tricks you should be using Read More »

Claude Code refactors your codebase too slowly. Fix it with this feature

This Claude Code command is amazing.

It’s somehow like the multi-agent teams feature — but much simpler and more straightforward.

It’s perfect for those large-scale changes that can easily be broken down into smaller tasks — like mass refactoring and codebase migration.

It spins up multiple AI agents to work simultaneously across the codebase — giving you an immense boost in productivity.

Let’s look at the key features that make it so invaluable when working with Claude Code — from autonomous testing and pull requests, to how it combines brilliantly with other Claude Code commands to build a comprehensive engineering workflow.

1. Multi-agent task decomposition: ship large-scale code changes faster

The foundation of /batch is its ability to break large requests into smaller, independent units of work.

When you invoke /batch, Claude Code:

  • Analyzes the repository.
  • Understands the requested objective.
  • Identifies logical boundaries within the codebase.
  • Decomposes the work into 5–30 independent work units.

Rather than editing files sequentially, Claude distributes work across multiple agents that can operate in parallel.

For example, a framework migration might be divided into:

  • Shared UI components
  • Authentication modules
  • Routing logic
  • API integrations
  • Testing infrastructure

By separating work into distinct scopes, /batch can scale far beyond the limitations of a traditional single-agent workflow.

2. The /batch and /simplify power combo

One of the more interesting aspects of /batch is how it complements Claude Code’s /simplify command.

While /simplify focuses on reducing complexity and unnecessary abstractions, /batch can coordinate improvements across an entire codebase.

The combination gives us several advantages:

  • Identifies overly complex patterns at scale.
  • Reduces unnecessary abstractions and indirection.
  • Improves code readability and maintainability.
  • Creates greater consistency across modules.
  • Eliminates repetitive manual refactoring work.

Instead of simplifying files one by one, you can use /batch to coordinate the effort across dozens of components simultaneously. This makes large-scale codebase cleanup and standardization significantly faster and more manageable.

3. Git worktree isolation: parallelize without conflicts

A key feature of /batch is its use of Git worktrees.

Every subagent receives its own isolated worktree instead of sharing a single working directory.

This enables:

  • Concurrent development
  • Independent validation
  • Isolated dependency management
  • Reduced merge conflicts

Because each worker operates in its own environment, changes made by one agent do not interfere with another.

A component migration can run in one worktree while another agent updates tests or refactors utilities elsewhere in the repository.

This isolation is what makes large-scale parallel execution practical and reliable.

4. Autonomous testing and pull requests

/batch is more than a code-editing tool.

Each subagent behaves like an autonomous developer responsible for its assigned scope.

Subagents can:

  • Implement code changes
  • Run test suites
  • Detect failures
  • Fix localized issues
  • Validate completed work
  • Create commits or pull requests

Instead of producing one massive repository-wide change, /batch generates smaller, self-contained outputs that are easier to review and merge.

The result is less manual coordination and a cleaner development workflow.

5. Plan-first execution

Before making any changes, /batch generates a structured execution plan.

The plan outlines:

  • How the task was divided
  • Which files or directories belong to each work unit
  • The responsibilities assigned to each subagent
  • The proposed transformation for each area of the codebase

Developers review and approve the plan before execution begins.

This approval stage:

  • Provides visibility into the process
  • Prevents unexpected repository-wide changes
  • Keeps humans in control of major modifications

Rather than blindly applying edits, /batch follows a plan-first approach designed for large-scale engineering work.

Final thoughts

Claude Code’s /batch command represents the broader shift single-agent coding assistance to coordinated multi-agent software engineering.

With key features like:

  • Intelligent task decomposition
  • Parallel AI execution
  • Git worktree isolation
  • Autonomous testing
  • Pull request generation
  • Human approval checkpoints

It enables repository-wide transformations at a scale that would traditionally require significant manual effort.

Software is no longer being built by a single AI agent, but now by a coordinated systems of specialized agents working together toward a common objective.

Claude Code refactors your codebase too slowly. Fix it with this feature Read More »

5 Claude Code Skills that every developer should know

Claude Code is powerful out of the box, but the right skills can make it so much better.

Skills give Claude reusable workflows for specific tasks. Instead of simply asking an AI to “build this feature,” you can give it a process for planning, designing, questioning assumptions, and remembering previous work.

Here are five Claude Code skills every developer should know.

1. feature-dev: Build features with a process

One of the biggest mistakes with AI coding agents is jumping straight from an idea into implementation.

You say:

“Add team invitations.”

And suddenly Claude is editing eight files before fully understanding the architecture.

feature-dev introduces a more structured workflow:

Understand → Plan → Implement → Test → Review

Claude can first explore the relevant parts of your codebase, understand existing patterns, develop an implementation approach, and then start making changes.

This becomes especially useful for features that touch multiple files, APIs, database models, or unfamiliar parts of a repository.

The goal is simple: don’t use Claude as a fast typist. Use it as an engineer responsible for the entire change.

2. frontend-design: Escape generic AI design

AI can build functional interfaces remarkably quickly.

The problem is that they often look… AI-generated.

Huge headline. Purple gradient. Three rounded cards. Glowing background.

Anthropic’s frontend-design skill pushes Claude toward more intentional, production-quality interfaces. Instead of immediately generating components, it considers things like typography, layout, visual hierarchy, color, motion, audience, and overall aesthetic direction.

So instead of simply asking:

“Build a dashboard.”

Claude can think about what the dashboard is for, who uses it, what information deserves attention, and how the interface should feel.

It’s especially useful for landing pages, dashboards, React components, product interfaces, and prototypes.

The real advantage isn’t better CSS. It’s better design decisions before the CSS gets written.

3. karpathy-guidelines: Make Claude precise and focused

AI coding agents can produce a lot of code very quickly.

Sometimes that’s the problem.

The community-built karpathy-guidelines skill packages ideas inspired by Andrej Karpathy’s observations about common LLM coding mistakes.

The principles are straightforward:

Think before coding. Keep solutions simple. Make surgical changes. Verify your work.

If you’re fixing one bug, Claude shouldn’t unnecessarily refactor three unrelated modules.

If requirements are ambiguous, it should surface the ambiguity instead of silently guessing.

And if it claims something works, there should be a test or another way to verify that claim.

The result is less unnecessary code and fewer “while I’m here…” changes.

4. claude-mem: Give Claude long-term memory

Monday: you explain your architecture to Claude.

Tuesday: you explain it again.

Wednesday: Claude rediscovers something it already learned Monday.

claude-mem tackles this problem by creating a persistent memory layer around Claude Code.

It can preserve useful observations from previous sessions — architectural discoveries, important files, implementation context, and other project knowledge — and surface relevant information later.

That means when you return to a project, Claude doesn’t always have to start its investigation from zero.

For large repositories and long-running projects, this can be a huge productivity boost.

The larger your codebase becomes, the more expensive forgetting becomes.

5. grill-me: Make Claude challenge your idea

This might be the most underrated skill.

Sometimes Claude’s implementation isn’t the problem.

Your idea is.

grill-me forces you to answer difficult questions before implementation begins.

Say you’re building an API usage billing system.

Claude might ask:

What happens when the same usage event arrives twice?

Can events arrive late?

Are usage limits hard or soft?

What happens when billing data disagrees with internal records?

Suddenly, you discover architectural decisions you hadn’t considered.

That’s valuable because AI has made implementation incredibly cheap. You can generate thousands of lines of code before realizing the underlying idea wasn’t properly thought through.

grill-me introduces useful friction before that happens.

Combine them

The real power comes from combining these skills.

Start with grill-me to challenge the idea.

Use karpathy-guidelines to keep the solution simple.

Use feature-dev to plan and implement it systematically.

Bring in frontend-design when you’re building the interface.

And let claude-mem preserve what Claude learns along the way.

The workflow becomes:

Question → Simplify → Plan → Build → Design → Verify → Remember

Claude can already write code incredibly fast. These skills help make sure it’s writing the right code, with the right process.

5 Claude Code Skills that every developer should know Read More »

How AGENTS.md improves your productivity & saves tokens

Recently Claude Code got native AGENTS.md support — and it has made AGENTS.md more important than ever.

AGENTS.md is a universal standard for controlling Claude Code and other agents. It tells AI coding agents how to work inside a codebase.

It can define project structure and coding rules. It can also tell agents which commands to run and where to find deeper documentation — giving them useful context before they start working.

With AGENTS.md you can become a lot more productive by spending less time explaining the same thing to your coding agent.

It also helps us spend much less on tokens and guarantee more reliable results across coding sessions and tools.

Let’s look at the various ways AGENTS.md helps us as developers.

1. Flexible AI coding — use multiple tools without rewriting your project instructions

This benefits became even greater these past few days when Claude Code gained native AGENTS.md support.

Coding tools often have their own way of storing project instructions.

You might have files like:

Plain text
.cursor/rules/ CLAUDE.md .github/copilot-instructions.md AGENTS.md

This gets messy when you decide to use different tools.

You’d have to copy rules and coding conventions across several files. Those copies can drift — one gets updated while another still gives an agent old instructions.

AGENTS.md gives teams a vendor-neutral place for those rules.

Not every tool handles AGENTS.md in the same way. Some still use their own instruction files.

But AGENTS.md can act as the single source of truth they point back to.

Developers get less vendor lock-in — they can switch agents without having to reteach the codebase.

2. Spend fewer tokens and get faster agent responses

Large repos contain much more information than an agent needs for one task.

Say an agent needs to fix authentication middleware. It probably doesn’t need to read the mobile app or billing service.

But without guidance it may search those areas while trying to work out what matters.

Every file and document it reads adds context. That can increase token use and API costs — it can also fill the agent’s context with information it doesn’t need.

A clean AGENTS.md can work as an index and map:

Plain text
## Repository map Authentication: services/auth/ Shared API types: packages/api-types/ ## Validation Auth tests: pnpm test services/auth

The agent now knows where to start and which commands to use.

This means fewer wasted tokens and faster agent runs. AGENTS.md can also point to deeper docs so the agent only loads them when needed.

3. Write shorter prompts and spend less time repeating Yourself

As developers we often give agents the same instructions again and again.

Run the tests. Don’t edit generated files. Use the right package manager. Follow the existing architecture.

Those instructions aren’t the task — they’re the rules for working in the repo.

AGENTS.md lets developers write those rules once. Prompts can then focus on what they actually want built.

That means less time writing long prompts and less chance of forgetting an important rule.

The developer explains the goal — the repo explains how work should get done.

4. Get developers and AI agents productive faster

New developers and new AI agents have the same basic problem.

Neither knows the repo yet.

They need to know where things live and how to run the project. They also need to know how to test changes.

Without clear guidance both have to explore.

AGENTS.md gives them that baseline knowledge from the start — so they spend less time figuring out the repo and more time doing useful work.

It also gives developers and agents a shared understanding of the project.

The result is faster onboarding and clearer communication between humans and AI.

5. Get more consistent AI code and spend less time fixing mistakes

Without shared instructions every developer can end up with a different AI workflow.

One developer tells the agent to run tests. Another expects it to know. One explains the architecture while another lets the agent work it out.

AGENTS.md puts those expectations in one shared place.

The whole team can define its coding rules and validation steps — so agents start with the same baseline.

That means fewer predictable mistakes and less time fixing AI-generated code during review.

The team can also update AGENTS.md as the project changes.

AI instructions stop living inside personal prompts — they become part of the project.

Less AI overhead means more time building

AGENTS.md gives coding agents a better map of the projects they work on.

For us developers the benefits are practical: less vendor lock-in and fewer wasted tokens. Prompts get shorter and onboarding gets faster — AI-generated code can also become more consistent.

AGENTS.md doesn’t make the model smarter.

It gives the model a better environment to work in — so developers can spend less time explaining their codebase and more time building.

How AGENTS.md improves your productivity & saves tokens Read More »

How Claude Hooks make you a more productive developer

Hooks are a powerful way to add deterministic control over an AI agent.

As you know these agents can be unpredictable at times.

That’s why hooks exist — they make AI agents more predictable and reliable by enforcing critical behavior with code, instead of relying on prompts.

Hooks are scripts that run automatically at key points in Claude’s workflow — like before an external tool runs or after Claude changes a file.

Instead of relying on prompts Claude might follow or ignore — hooks let you control these things at the system level.

You can automate repetitive work that needs to happen only when the agent does something — or give Claude extra instructions only when it needs them.

Let’s look at the various ways hooks upgrade coding agents to help you build faster as a developer.

1. Dynamic context injection — give Claude the right information at the right time

Big system prompts get messy fast.

You add coding rules. Architecture docs. Security requirements. Then instructions for one small part of your codebase.

Soon Claude carries lots of context it doesn’t need at all times.

Hooks give you another option — inject information only when it becomes useful.

Say Claude starts changing /src/payments.

A PreToolUse hook could give Claude your payment security rules before it makes the change.

If Claude works on database migrations you can load your migration rules instead.

A SessionStart hook could also load GitHub issues or Jira tickets when Claude starts.

Less noise — more useful context.

2. Hard security guardrails — stop dangerous actions before they happen

❌ “don’t run dangerous commands”

❌ “don’t expose secrets”

These are not things you should put in prompts.

Use hooks.

A prompt tells Claude what you want it to do — a hook can control what it actually can do in the real world.

A PreToolUse hook can inspect an action before Claude runs it. If the action looks unsafe according to your specifications, the hook can block it.

You can block commands like rm -rf or force-pushing to main. You can also protect .env files and API keys.

You don’t need to trust Claude to remember the rule every time — your system enforces it.

3. Enforce engineering standards — catch bad code before you review it

Claude can write code quickly.

But you don’t want to keep saying “run the tests” or “check the linter.”

Hooks can do that work automatically.

A PostToolUse hook can run your tests whenever Claude changes source code.

If something fails the hook can send the error back to Claude — Claude sees what broke and can try to fix it.

The workflow becomes:

Claude changes code → tests run → something fails → Claude fixes it.

You can use this for testing, linting, type checking and other quality checks.

You define the rule once — Claude follows it automatically.

4. Automatic code formatting — don’t waste AI time on formatting

Formatting is another job you probably shouldn’t give to the model.

You don’t need Claude thinking about spaces and indentation when tools already handle that well.

A PostToolUse hook can run Prettier, Black, or gofmt whenever Claude changes a file.

That means cleaner Git diffs and fewer formatting problems during review.

It also saves prompts — you don’t need to keep asking Claude to fix imports or indentation.

Claude solves the engineering problem — your formatter handles formatting.

5. External tool orchestration — connect Claude to the rest of your workflow

Hooks can run normal system commands.

So they can connect Claude to other tools you already use.

Say Claude spends 20 minutes working on a task — you don’t need to watch the terminal.

A hook could send you a Slack or Discord message when it finishes.

You could also use hooks for voice updates, human approvals, audit logs and cost monitoring.

You can even track token use and stop a session when it reaches a set limit.

Claude does the work — hooks handle what happens around it.

Hooks mean less failure and more reliable automation

Claude Code hooks let you move important rules out of prompts and into your development environment.

Security rules can block actions. Tests can run themselves. Context can appear only when Claude needs it.

Formatters can clean up files. Other tools can react when Claude finishes work.

Instead of constantly telling Claude what to do — you build a system that keeps it on track.

That means less babysitting. Fewer repetitive prompts. Faster feedback.

And much more predictable AI-assisted development.

How Claude Hooks make you a more productive developer Read More »

How the Grill Me Skill fixes hidden bugs and improves code quality

grill-me has been one of the most transformative skills in the AI coding ecosystem.

It’s a powerful skill that turns Claude Code into an interviewer to poke holes in your assumptions and find flaws in your thinking.

It reveals blind spots, catches subtle problems and helps you make better technical decisions.

It gives you a deeper understanding of your overall development process, and improves the overall quality of your code.

Let’s look at the key features that makes it such a valuable part of your workflow.

1. Inverted roles — find blind spots before you build

There is a problem with asking AI to review your work — you still need to know what to ask.

If you forgot about concurrency then you may never ask about concurrency.

/grill-me solves this by taking control of the questions.

Say you tell it that users upload files before you add a processing job to a queue. It might ask:

What stops the same upload from being processed twice?

This is an important edge case you might have never thought of.

Your answer gives it somewhere new to dig.

Which parts of the processing pipeline are actually idempotent?

You are no longer asking AI to confirm your design. You are defending it — which can expose crucial missing requirements before you spend hours building the wrong thing.

2. Socratic pressure testing — catch problems before production

A good grill does more than run through a checklist. It questions the assumptions behind your answers.

It looks for the parts of a design that seem obvious but have not been fully thought through.

This can uncover race conditions and security risks. It can also find weak retry logic or scaling limits that normal AI conversations may miss.

The benefit is clear — you find failure cases during design instead of finding them at 2 a.m. in production.

3. Dynamic pressure testing — make better technical decisions

/grill-me doesn’t follow a fixed list of questions. It changes direction based on your answers.

A strong answer can move the conversation forward. A vague answer gives the AI a reason to dig deeper — especially when your reasoning depends on an assumption you haven’t proved.

This pushes developers to turn vague ideas into clear technical decisions.

It also makes those decisions easier to explain later. You have already had to think through the tradeoffs and defend why your approach works.

4. Customizable personas — get expert review on demand

You don’t always need the same kind of review.

A friendly grill can act like a senior engineer helping you spot things you missed. A tougher one can challenge every weak assumption you make.

You can also change who is doing the grilling.

Ask for a security engineer and the questions can focus on authentication or trust boundaries. Ask for an SRE and the focus can move to outages and recovery. A database expert can dig into indexes and transactions.

It gives developers another set of eyes without waiting for the right expert to become free.

5. Context-aware scrutiny — get feedback on your actual code

Generic architecture questions only go so far.

/grill-me becomes much more useful when it can read the project itself. It can use your code and specs to understand how the system really works.

That makes its questions specific to your project rather than based on textbook problems.

It also saves developers from explaining everything from scratch. The AI can find facts in the project — while the developer focuses on explaining and defending the decisions behind them.

A sparring partner — ship with fewer surprises

AI has made writing code much faster.

It has not made bad assumptions cheaper.

In fact AI agents can turn one bad assumption into thousands of lines of convincing code very quickly.

/grill-me adds friction before that happens — the useful kind.

Attack the idea before implementing it. Find the failure cases before users do. Question the assumptions before they turn into technical debt.

How the Grill Me Skill fixes hidden bugs and improves code quality Read More »

How Claude Code’s /rewind command improves your productivity

AI coding agents are great — until they go down the wrong path.

Maybe Claude Code changed five files before you noticed the problem. Maybe the first idea was wrong — and every prompt after that made things worse.

You could use Git to clean things up…

But Claude Code has a much faster option for this kind of trial and error: /rewind.

It lets you return to an earlier checkpoint quickly. But it does a lot more than just undo code.

1. Multiple restore options let you keep the exact parts that worked

When you run /rewind and pick a checkpoint, Claude Code gives you three restore options.

Restore Code and Conversation takes both your files and chat back to that point.

Use this when the whole attempt went wrong. You can throw away the bad code and the reasoning that led to it.

Restore Code Only is more interesting.

Claude puts the files back but keeps the current conversation. So Claude can still know what it learned during the failed attempt — even though the code itself is gone.

Maybe it found an edge case. Maybe it learned that an API works differently than expected.

You can keep that knowledge and try a better approach.

Restore Conversation Only does the opposite.

Your changed files stay in place. But Claude’s conversation goes back to the earlier checkpoint.

This works well when you like the code but the chat has become messy. You get a cleaner starting point without losing the work already sitting in your files.

So /rewind isn’t just undo — it lets you choose which state you want to keep.

2. Context summaries keep long coding sessions useful

The /rewind menu isn’t only about undoing things.

It also has “Summarize from here” and “Summarize up to here” for when the context gets long.

These options don’t change your files.

Instead they compress parts of your conversation into a shorter summary. This helps when a long coding session starts filling Claude’s context window.

Maybe you spent 30 minutes debugging an approach that didn’t work.

Claude doesn’t need every message from that process. It may only need to know what you discovered.

You can summarize that section and keep moving.

So /rewind is also a context management tool — not just a recovery tool.

3. Restored prompts make it faster to fix a bad instruction

Claude Code also saves you from retyping your prompt.

When you restore conversation state, it puts the original prompt from that checkpoint back into the input box.

Claude Code restores the original prompt on rewind:

Say you originally wrote:

Refactor the payment service so retries happen at the transport layer.

Claude tries it. You inspect the result and realize your prompt was too vague.

Rewind and the prompt comes back. Now you can edit it with clearer rules and try again.

The workflow becomes simple:

Prompt → Try → Inspect → Rewind → Edit → Try Again

It’s a small feature — but it makes experimenting much smoother.

4. Automatic checkpoints let you experiment without managing Git

Claude Code creates checkpoints as it edits files.

This works separately from Git. You don’t need to make a commit before every experiment or create temporary branches just so you have somewhere to return to.

You can ask Claude to try something.

Don’t like it? Rewind.

Then try something else.

This doesn’t replace Git. Git still gives you long-term project history and branches.

/rewind solves a smaller problem — quickly recovering from Claude’s changes while you’re working.

5. Key limitation to be aware of

There is one big limit.

/rewind tracks changes made through Claude’s file editing tools. It can’t reliably undo side effects from shell commands.

Think about commands like:

Shell
rm file.txt mv old/ new/ npm install

The same warning applies to database migrations and deployments.

If Claude runs a migration that changes your database, /rewind can’t magically return that database to its old state.

So don’t treat checkpoints as a full backup system.

They are a safety net for Claude’s tracked edits.

And that’s what makes /rewind useful.

You can try an idea. Keep what Claude learned. Throw away what didn’t work — then take another shot.

As coding agents make bigger changes to our projects, being able to recover quickly may matter almost as much as getting the first attempt right.

How Claude Code’s /rewind command improves your productivity Read More »