mickeyyaya

intent

Pre-Scout intent capture phase. Structures vague user goals into intent.md before any subagent budget is spent. Opt-in via policy.json workflow.phase_enables.intent=on.

mickeyyaya 6 2 Updated 2mo ago
GitHub

Install

npx skillscat add mickeyyaya/evolve-loop/intent

Install via the SkillsCat registry.

SKILL.md

intent

Sprint 4 composable skill (v8.19.0+). Wraps the new Intent phase that runs between Calibrate and Research when workflow.phase_enables.intent=1. Single-persona, autonomy-preserving — no human checkpoint mid-cycle.

When to invoke

  • Autonomous: orchestrator advances to phase=intent when cycle-state.intent_required==true (set at cycle init from workflow.phase_enables.intent=1)
  • User-driven: /evo:intent, before /evo:loop, to lock in structured intent
  • Re-run: re-invoke to replace prior intent.md within the same cycle (kernel accepts latest ledger entry)

When NOT to invoke

  • After Scout has already run for this cycle (intent must precede research)
  • For pure-execution cycles where the goal is fully specified (e.g., "fix typo at file.md:42") — but in practice, even those benefit from the explicit non_goals and acceptance_checks
  • When workflow.phase_enables.intent is unset and the user has not explicitly invoked /evo:intent — default flow skips this phase

Workflow

Step Action Exit criteria
1 Read user goal + workspace + priorIntent (if re-run) Inputs gathered
2 Classify input via AwN framework (IMKI/IMR/IwE/IBTC/CLEAR) Single class chosen
3 If awn_class == IBTC: emit short scope-rejection intent.md gate_intent_to_research will short-circuit cycle
4 Otherwise: produce 8-field structured intent.md Frontmatter complete + body written
5 Surface ≥1 challenged_premise — assumption to actively question premise/challenge/alternative populated
6 Write $workspace/intent.md File present, parseable
7 Subagent runner writes ledger entry binding intent.md SHA to cycle kind: "agent_subprocess", role: "intent" ledger entry

Autonomy invariant

This skill MUST NOT block on human approval. The intent persona produces intent.md; gate_intent_to_research verifies structure (≥1 challenged_premise, valid awn_class, SHA matches ledger); cycle proceeds. There is no accept-intent operator command — re-running /evo:intent replaces the prior file, and the kernel uses the latest ledger entry. This is the difference between an autonomy-preserving filter and a checkpoint.

Cycle-binding

Like every other agent, intent.md gets a ledger entry with (artifact_sha256, git_head, tree_state_sha, challenge_token). ship.sh's downstream tree-state check works against the same SHA-binding the auditor uses.

Phase facts

Fact Value
Phase intent (plan archetype, optional, gated by workflow.phase_enables.intent=on)
Persona agents/evolve-intent.md
Profile .evolve/profiles/intent.json — CLI codex-tmux, tier deep, single-writer
Artifact intent.md (cycle workspace)

Output contract

intent.md must declare:

  • goal:
  • acceptance_checks:

Composition

Invoked by:

  • /evo:intent (user-driven)
  • evolve-orchestrator macro when cycle-state.intent_required==true

Cannot be:

  • Invoked by another persona (Anti-pattern B per docs/architecture/tri-layer.md)
  • Fanned out (single perspective; no parallel_subtasks in profile for v0.1)
  • Substituted via evolve guard phase --bypass (CRITICAL violation per CLAUDE.md)

Reference

  • agents/evolve-intent.md (persona)
  • .evolve/profiles/intent.json (permission profile)
  • legacy/scripts/lifecycle/phase-gate.sh (gate_calibrate_to_intent, gate_intent_to_research)
  • legacy/scripts/guards/phase-gate-precondition.sh (scout-blocked-without-intent enforcement)
  • .evolve/research/intent-capture-patterns.md (5-source research grounding)
  • docs/architecture/intent-phase.md (full architecture)