DimonSmart.IntentDrivenDevelopment.Tool
1.0.4
Prefix Reserved
See the version list below for details.
dotnet tool install --global DimonSmart.IntentDrivenDevelopment.Tool --version 1.0.4
dotnet new tool-manifest
dotnet tool install --local DimonSmart.IntentDrivenDevelopment.Tool --version 1.0.4
#tool dotnet:?package=DimonSmart.IntentDrivenDevelopment.Tool&version=1.0.4
nuke :add-package DimonSmart.IntentDrivenDevelopment.Tool --version 1.0.4
Intent-Driven Development
Intent-Driven Development is a practical way to use AI coding agents without turning the project into a pile of disconnected prompts, generated plans, and tool-specific instruction files.
The idea is simple:
Keep product intent in one canonical specification set. Generate agent-specific instructions from that source. Let AI help with implementation, but keep engineering judgment in the loop.
The guiding rule:
Specifications should be complete enough to rebuild the product from scratch, and strict enough not to become a task tracker.
This is close to Spec-Driven Development, but with a different emphasis.
The specification is not a magic executable artifact. It does not replace architecture, code review, testing, or human responsibility. It is a stable description of what the product should become.
Why This Exists
AI coding agents are useful, but they have a weak memory model.
A chat can contain the right decision today and lose it tomorrow. One agent can know the project rules while another agent sees only a local prompt. A generated instruction file can drift from the real product intent. After several iterations, nobody is completely sure which file is the source of truth.
Intent-Driven Development fixes that by separating three things:
product intent durable product knowledge
agent instructions generated target formats
implementation code, tests, scripts, and concrete changes
The important part is the first one.
Product intent should survive tool changes, agent changes, and implementation attempts.
Current Model
Main instruction files are small routers:
CLAUDE.md
AGENTS.md
GEMINI.md
.github/copilot-instructions.md
They say when to use IDD, where product intent lives, and which focused skills to load.
Detailed IDD workflows live in skills:
.claude/skills/*
.agents/skills/*
.github/skills/*
Project product intent lives in .specs/.
Do not put full methodology into CLAUDE.md, AGENTS.md, GEMINI.md, or
.github/copilot-instructions.md.
How It Differs from Spec-Driven Development
Spec-Driven Development has a good core idea: describe what should be built before asking an AI agent to build it.
The problem starts when the specification becomes too many things at once:
- product description
- task tracker
- implementation plan
- generated checklist
- temporary chat memory
- tool-specific command input
That works for small demos. It becomes noisy in a real project.
Intent-Driven Development keeps the useful part and removes the rest.
| Spec-Driven Development | Intent-Driven Development |
|---|---|
| The spec often drives a feature workflow | The spec describes the target product state |
| Tasks may become part of the spec flow | Tasks are temporary and should not become product memory |
| The workflow is often tied to one agent or command system | Agents are target formats generated from one canonical source |
| Generated plans can look authoritative | Engineering judgment stays explicit |
| The spec can become a process artifact | The spec remains product knowledge |
This is why the method is called Intent-Driven Development.
The point is not to worship the spec. The point is to keep the intent stable.
Core Idea
A specification should answer one question:
If we delete the implementation, can we rebuild the product from these files?
In this method, intent means stable product truth that future implementations must preserve.
A task says what to do next. Intent says what must remain true after the task is done.
If the answer is yes, the specification is useful.
If the answer is no, it is probably just a task list, a note, or a chat summary.
One-Page Mental Model
Ask one question first:
Does this change affect what future implementations must preserve?
If yes, update or create a specification or ADR.
If no, keep it in a task, issue, pull request, commit message, or chat.
If unsure, create a spike or ask for clarification before turning it into normative product intent.
| Change | Goes to .specs/? |
Reason |
|---|---|---|
| Product behavior changes | Yes | Future implementations must preserve it |
| Domain contract changes | Yes | It affects product meaning |
| Accepted architecture changes | Yes | It constrains future implementation |
| Acceptance criteria or verification changes | Yes | It changes how correctness is judged |
| Local task or TODO | No | It describes work, not product truth |
| Temporary implementation status | No | It may be obsolete tomorrow |
| Formatting or small refactoring | No | It does not change product intent |
| Generated agent output | No | Generated files are not authoritative |
| Existing implementation differs from spec | Not automatically | Implementation evidence is not intent by itself |
What Goes Into Specifications
Good specification content:
- product behavior
- user scenarios
- domain contracts
- important technical constraints
- architecture decisions that define the product
- framework or library choices when they are part of the product identity
- compatibility requirements
- non-goals
- acceptance criteria
- verification rules
Bad specification content:
- temporary tasks
- what we are doing today
- local implementation notes
- outdated plans
- generated agent output
- chat history
- duplicated instruction files
A specification says what should remain true after the work is done.
How Agents Fit In
Codex, Claude, Gemini, GitHub Copilot, and other AI coding agents have different instruction formats. That is a tooling detail.
The project should not make one agent's format the source of truth.
IDD keeps canonical methodology, compact bootstrap packs, project rules, and skills in source files, then generates agent-specific output from them.
canonical source -> adapters -> generated agent files and skills
In this repository, src/canonical/ is authoritative and generated/ is build
output.
If something important changes, update the canonical source and regenerate the target files.
Context Discipline
IDD avoids large universal workflows that read many files, generate many intermediate artifacts, and leave long reasoning traces in the main agent conversation.
Specification work should be split into small focused skills.
A skill should read only the specifications needed for the current decision. Large specification-maintenance operations should return a compact result: the proposed change, conflicts, affected files, and verification notes.
When an AI coding tool supports isolated or forked execution for heavy skills, IDD adapters may use it to keep the main conversation focused.
Repository Layout
src/canonical/ canonical methodology, project files, skills, and packs
src/canonical/packs/ compact bootstrap content for main instruction files
src/canonical/methodology/ full methodology for skills and project docs
src/canonical/skills/ task-specific workflows
src/adapters/ target-specific entry points and skill front matter
generated/ generated files for each AI coding agent system
npm/ universal CLI delivery wrapper
tools/generate/ C# generator
tools/idd-tool/ .NET global tool CLI installer
tools/smoke-tests/ smoke tests for generated output
scripts/ local check and release helper scripts
Edit files under src/canonical/ and src/adapters/.
Then run:
.\scripts\Check.ps1
The generated/ directory is intentionally ignored by git.
It is reproducible output from the canonical source and adapters. Do not edit it as product knowledge.
Workflow
The usual workflow is:
1. Update canonical methodology or adapters.
2. Run the local check.
3. Review generated output.
4. Use generated files with the target AI coding agent.
5. Keep durable decisions in canonical specs, not in chat.
In practice, this means:
.\scripts\Check.ps1
The check should prove that the generated agent files are still reproducible and valid enough to use.
Distribution
Intent-Driven Development is release-first.
The canonical versioned artifact is the GitHub Release archive. It contains the canonical source, adapters, generated target files, manifest, license, README, and checksums for the released content.
Recommended distribution:
- GitHub Releases for versioned artifacts
- npm/npx for universal CLI installation
- .NET tool for .NET-friendly CLI installation
- NuGet package for .NET-friendly file consumption
Use npm/npx when you want to install generated agent files into any project without requiring the .NET SDK:
npx intent-driven-development list-targets
npx intent-driven-development install --target claude
npx intent-driven-development install --target codex
npx intent-driven-development install --target copilot
npx intent-driven-development install --target gemini
The default install mode is compact:
npx intent-driven-development install --target claude --entry minimal
Use --entry none to install only skills for targets that support them. Use
--entry full only as a legacy/debug mode for environments that cannot load
skills reliably.
Use NuGet when a .NET-friendly package is the most convenient way to consume the same canonical methodology, adapters, and generated files:
dotnet add package DimonSmart.IntentDrivenDevelopment
Use the .NET global tool when you want a .NET-native installer command:
dotnet tool install --global DimonSmart.IntentDrivenDevelopment.Tool
intent-driven-development list-targets
intent-driven-development install --target codex
What This Method Optimizes For
IDD is useful when the project has:
- more than one AI coding agent
- long-lived product rules
- repeated implementation sessions
- architectural constraints that should not be rediscovered every time
- generated agent instructions
- a need to keep project knowledge outside chat history
It is less useful for one-off experiments where the code will be thrown away.
Non-Goals
IDD deliberately does not try to do several things.
- Do not turn specifications into a task tracker.
- Do not store agent-specific instruction copies as the source of truth.
- Do not build Claude or Gemini instructions on top of Codex AGENTS.md.
- Do not update CopilotInstructions as a canonical source.
- Do not create a pull request back to CopilotInstructions.
- Do not use legacy terminology in canonical methodology or skills.
The method is intentionally boring here.
There should be one canonical source. Everything else is generated, adapted, or temporary.
Migration notes from the older project model are in
src/canonical/methodology/migration-from-copilotinstructions.md.
Release
Pull requests and pushes to main run:
.github/workflows/idd-smoke.yml
Release publication follows the tag-based flow:
.\publish-next-version.ps1
The script runs the local check, creates the next vMAJOR.MINOR.PATCH tag, and
pushes it.
Then .github/workflows/publish-package.yml packs
the release archive, checksums, DimonSmart.IntentDrivenDevelopment,
DimonSmart.IntentDrivenDevelopment.Tool, and the npm package archive. It
creates a GitHub Release, publishes the NuGet packages, and publishes npm only
when NPM_TOKEN is configured.
Local release packaging uses the same script as CI:
.\scripts\Pack-Release.ps1 -Version 1.0.0
Summary
Intent-Driven Development is Spec-Guided Dev without turning the spec into a task tracker or an AI command script.
The specification is the product memory.
The adapters are translation layers.
The generated files are delivery formats for specific agents.
The engineer still owns the result.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
This package has no dependencies.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.17 | 81 | 6/9/2026 |
| 1.0.16 | 83 | 6/9/2026 |
| 1.0.15 | 85 | 6/9/2026 |
| 1.0.14 | 83 | 6/9/2026 |
| 1.0.13 | 78 | 6/9/2026 |
| 1.0.12 | 85 | 6/9/2026 |
| 1.0.11 | 85 | 6/9/2026 |
| 1.0.10 | 100 | 6/8/2026 |
| 1.0.9 | 93 | 6/8/2026 |
| 1.0.8 | 98 | 6/8/2026 |
| 1.0.7 | 92 | 6/8/2026 |
| 1.0.6 | 107 | 6/8/2026 |
| 1.0.5 | 88 | 6/7/2026 |
| 1.0.4 | 88 | 6/7/2026 |
| 1.0.3 | 100 | 6/6/2026 |