affaan-m/ECC · error

skills:amendify requires --skill

Error message

skills:amendify requires --skill <id>

What it means

inspectSkillLoopTarget in scripts/session-inspect.js throws when the target 'skills:amendify' is requested without a --skill <id> value in options. The amendment proposer needs a concrete skill id to operate on.

Solutions

  1. Add --skill <id>, e.g. `node scripts/session-inspect.js skills:amendify --skill tdd-workflow`.
  2. Verify the skill id exists in skills/ and matches the directory name.
  3. Check the script usage for which targets require --skill.

Example fix

// before
node scripts/session-inspect.js skills:amendify
// after
node scripts/session-inspect.js skills:amendify --skill tdd-workflow
Defensive patterns

Strategy: validation

Validate before calling

if (target === 'skills:amendify' && !skillId) { console.error('skills:amendify requires --skill <id>'); process.exit(2); }

Type guard

const hasSkillId = (o) => typeof o.skillId === 'string' && o.skillId.length > 0;

Try / catch

try { payload = skillLoopPayload(target, options); } catch (e) { console.error(e.message); process.exit(2); }

Prevention

When it happens

Trigger: Running session-inspect with target skills:amendify but no --skill flag, so options.skillId is undefined/null.

Common situations: Forgetting --skill on the amendify target (other targets don't require it), shell quoting dropping the flag, running an abbreviated command from memory.

Understand the failure class

Background: "--flag is required" and "must specify" CLI errors: how missing-required-flag validation works and how to fix it — this error's family across 20 libraries.

Related errors


AI-assisted analysis of affaan-m/ECC@8321021c54 (2026-09-16). Data as JSON: /api/errors/4ac08aa303c37dce. Report an issue: GitHub.

Appendix: source

Thrown at scripts/session-inspect.js:81

  return { target, adapterId, targetType, writePath, listAdapters, skillId, amendmentId, observationsPath };
}

function inspectSkillLoopTarget(target, options = {}) {
  const observations = readSkillObservations({
    cwd: options.cwd,
    projectRoot: options.cwd,
    observationsPath: options.observationsPath
  });

  if (target === 'skills:health') {
    return buildSkillHealthReport(observations, {
      skillId: options.skillId || null
    });
  }

  if (target === 'skills:amendify') {
    if (!options.skillId) {
      throw new Error('skills:amendify requires --skill <id>');
    }

    return proposeSkillAmendment(options.skillId, observations);
  }

  if (target === 'skills:evaluate') {
    if (!options.skillId) {
      throw new Error('skills:evaluate requires --skill <id>');
    }

    return buildSkillEvaluationScaffold(options.skillId, observations, {
      amendmentId: options.amendmentId || null
    });
  }

  return null;
}

View on GitHub (pinned to 8321021c54)