In an AI development project using Spec Kit SDD, every Spec Kit command operates on only a single feature—the one considered to be active.
And in the project, the pointer to this "active" feature is the content of the .specify/feature.json file:
{
"feature_directory": "specs/001-arranque-y-servicio"
}
The content of this file is modified every time a feature is created. Therefore, it is essential to be highly organized and always keep track of which feature is "active"—that is, the feature to which the commands executed from Spec Kit apply.
Each feature must have its own Git branch, so that when switching branches, the pointer updates to the appropriate value in `.specify/feature.json`.
There is also a command that tells you which spec is active, without modifying anything:
./.specify/scripts/bash/check-prerequisites.sh --json --paths-only | jq
and returns something similar to
{
"REPO_ROOT": "/hdd2/configurations/feitam/workspaces/app01",
"BRANCH": "001-arranque-y-servicio",
"FEATURE_DIR": "/hdd2/configurations/feitam/workspaces/app01/specs/001-arranque-y-servicio",
"FEATURE_SPEC": "/hdd2/configurations/feitam/workspaces/app01/specs/001-arranque-y-servicio/spec.md",
"IMPL_PLAN": "/hdd2/configurations/feitam/workspaces/app01/specs/001-arranque-y-servicio/plan.md",
"TASKS": "/hdd2/configurations/feitam/workspaces/app01/specs/001-arranque-y-servicio/tasks.md"
}
There is also an environment variable—such as `pi` or `opencode`—that you can specify before running your harness; this allows a given spec to take precedence over the details defined in `.specify/feature.json`:
SPECIFY_FEATURE_DIRECTORY=specs/001-arranque-y-servicio opencode
Every Spec Kit command—such as /speckit.specify, /speckit.clarify, /speckit.plan, /speckit.tasks, /speckit.analyze, /speckit.checklist, /speckit.implement, or /speckit.converge—operates on the active feature.