Fission-AI/OpenSpec · error · Error
Spec '${specId}' not found at openspec/specs/${specId}/spec.
Error message
Spec '${specId}' not found at openspec/specs/${specId}/spec.md What it means
Error "Spec '${specId}' not found at openspec/specs/${specId}/spec.md" thrown in Fission-AI/OpenSpec.
Source
Thrown at src/commands/spec.ts:259
if (!specId) {
const canPrompt = isInteractive(options);
const specIds = await getSpecIds();
if (canPrompt && specIds.length > 0) {
const { select } = await import('@inquirer/prompts');
specId = await select({
message: 'Select a spec to validate',
choices: specIds.map(id => ({ name: id, value: id })),
});
} else {
throw new Error('Missing required argument <spec-id>');
}
}
const specPath = join(SPECS_DIR, specId, 'spec.md');
assertSpecPath(SPECS_DIR, specPath);
if (!existsSync(specPath)) {
throw new Error(`Spec '${specId}' not found at openspec/specs/${specId}/spec.md`);
}
const validator = new Validator(options.strict);
assertSpecPath(SPECS_DIR, specPath);
const report = await validator.validateSpec(specPath);
if (options.json) {
console.log(JSON.stringify(report, null, 2));
} else {
if (report.valid) {
console.log(`Specification '${specId}' is valid`);
} else {
console.error(`Specification '${specId}' has issues`);
report.issues.forEach(issue => {
const label = issue.level === 'ERROR' ? 'ERROR' : issue.level;
const prefix = issue.level === 'ERROR' ? '✗' : issue.level === 'WARNING' ? '⚠' : 'ℹ';
console.error(`${prefix} [${label}] ${issue.path}: ${issue.message}`);
});View on GitHub (pinned to 6926ccb18a)
When it happens
Trigger: Thrown at src/commands/spec.ts:259 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of Fission-AI/OpenSpec@6926ccb18a (2026-08-25).
Data as JSON: /api/errors/9ab776bdb7716a19.
Report an issue: GitHub.