Help us improve
Share bugs, ideas, or general feedback.
From agentic-development-workflow
Classifies feedback and updates product context after shipping features. Routes observations into bugs, refinements, or plan changes to close the feedback loop.
How this skill is triggered — by the user, by Claude, or both
Slash command
/agentic-development-workflow:reflectThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Close the feedback loop. Transform real-world observations into actionable changes to the product context — the story graph, the architecture, or even the opportunity hypothesis.
Share bugs, ideas, or general feedback.
Close the feedback loop. Transform real-world observations into actionable changes to the product context — the story graph, the architecture, or even the opportunity hypothesis.
Where this fits:
/aep-envision → /aep-map → /aep-scaffold → [ /aep-design → /aep-launch → /aep-build → /aep-wrap ] → /aep-reflect
▲ you are here
Session: Main, interactive with user
Input: Observations after shipping (user testing, error logs, cost data, product instincts)
Output: Classified feedback + updated product-context.yaml; if product intent changed, also updated product/index.yaml (split mode)
File Resolution:
ls product/index.yaml 2>/dev/null && echo "SPLIT MODE" || echo "V1 MODE"
cat product-context.yaml
product/index.yaml exists): Read product definition from product/index.yaml (what was intended). Read operational state from product-context.yaml (what happened).product-context.yaml.If product-context.yaml does not exist, there is nothing to reflect on — run /aep-envision and /aep-map first.
Collect observations from all sources. Read product definition (from product/index.yaml in split mode, product-context.yaml in v1 mode) for what was intended, and product-context.yaml cost section for execution data.
cost section of product-context.yaml. If agent execution traces exist, review per-story costs. Which story types were expensive? Where did retries concentrate?lessons-learned/*.md for observations captured by workspace agents during builds. Summarize patterns across recent lessons — recurring errors, solutions that worked, missing documentation.Ask the user one source at a time. Don't rush — the quality of classification depends on the quality of input.
Every piece of feedback becomes one of:
Specified behavior that does not work.
product-context.yaml with priority: high and status: pending in the current layer, route to /aep-dispatchstories section of the YAMLWorking behavior that needs improvement — or existing stories that need to move between layers.
status: pending, add to the stories section of product-context.yaml. Alternatively, promote an existing story from a later layer to an earlier one if learning shows it's needed sooner.Sub-type — Calibration: A gap between "works correctly" and "feels right" in any quality dimension. The code works as specified and the spec was correct, but the result doesn't match what the human actually wanted.
Classification questions for calibration observations:
For heavy dimensions (visual-design, ux-flow, copy-tone): create stories in the next .5 alignment layer with calibration_type: <dimension>. Run /aep-calibrate <dimension> before dispatching.
For light dimensions (api-surface, data-model, scope-direction, performance-quality): route to /aep-calibrate <dimension> directly — may create stories in next integer layer or update product context inline. No .5 layer needed.
New requirement or invalidated assumption.
product section via /aep-envisionarchitecture section via /aep-mapproduct section as revisedFundamentally changes the bet — the original opportunity hypothesis is wrong or has shifted.
/aep-envision Phase 0Observations about the workflow itself, not the product. Examples: permission stalls, signal staleness, missing tooling, agent configuration gaps.
lessons-learned/process/<observation>.md. Add a process_learnings entry to the topology.routing section of product-context.yaml./aep-workflow-feedback which provides a standardized format and downstream→AEP routing.Present the classification to the user for each observation. Let them override — they know their product better than any framework.
After classifying all feedback, review the current layer assignments. Release lines are pencil marks — they should shift based on what you learned. This is normal iteration, not a sign that something went wrong.
For each layer that has not yet been built:
product-context.yaml — change layer assignments in the stories section.Key rule: Re-slicing does NOT require going back to /aep-envision. You only route there when the backbone (user activities) or product framing changes — not when layer assignments shift. See docs/decisions/release-line-adjustments.md for the full decision framework.
If the completed layer has an outcome_contract defined in product.layers[]:
keep_if condition met → record as passed, advance to next layerotherwise triggered → record as failed, recommend re-slicing: promote stories from later layers, adjust backbone if needed- date: YYYY-MM-DD
type: outcome_evaluation
summary: "Layer N outcome contract: [passed/failed] — [metric] was [actual] vs target [target]"
If no outcome contract exists for the completed layer, skip this step.
Review the cost section of product-context.yaml along with any execution traces from .dev-workflow/:
Record cost observations and any topology adjustment recommendations.
Based on the classified feedback, update the appropriate file:
product-context.yamlproduct/index.yaml (split mode) or product-context.yaml (v1 mode)Append to the changelog section with a full feedback classification entry:
- date: YYYY-MM-DD
type: reflection
summary: "Post-[feature/layer] reflection"
feedback:
bugs:
- description: "..."
story_id: "fix-xxx"
refinements:
- description: "..."
story_id: "ref-xxx"
target_layer: N
discoveries:
- description: "..."
affected_section: "product|architecture"
opportunity_shifts:
- description: "..."
cost_observations: "..."
Update stories section with new stories (bug fixes get priority: high, refinements go to next layer)
Update product section if assumptions changed (version the changes)
Update topology section if routing adjustments are needed
Validate YAML (see references/yaml-guardrails.md):
npx js-yaml product-context.yaml > /dev/null && echo "YAML OK"
If this fails, fix the YAML before committing. Common fixes: quote list items containing colons, flatten nested sub-lists, escape embedded double quotes.
Commit updates:
# Resolve $BASE (integration branch) — see git-ref "Integration Branch" (override → develop → main)
BASE=$(git config --get aep.integration-branch 2>/dev/null || true)
[ -z "$BASE" ] && { git show-ref --verify --quiet refs/heads/develop \
|| git show-ref --verify --quiet refs/remotes/origin/develop; } && BASE=develop
BASE=${BASE:-main}
git pull --ff-only origin "$BASE"
git add product-context.yaml product/
git commit -m "chore: reflect — classify feedback and update product context"
git push origin "$BASE"
Based on the reflection, recommend the next step:
| Feedback type | Next action |
|---|---|
| Only bugs | Fix stories added to YAML → /aep-dispatch → /aep-design → /aep-build |
| Refinements | Next layer stories added to YAML → /aep-dispatch → /aep-design → /aep-build |
| Discovery (product) | /aep-envision to update assumptions |
| Discovery (architecture) | /aep-map to update system map |
| Opportunity shift | /aep-envision Phase 0 (re-validate) |
| Calibration (heavy) | .5 alignment stories created → /aep-calibrate <dimension> → /aep-dispatch |
| Calibration (light) | /aep-calibrate <dimension> (inline) → stories may update → /aep-dispatch |
| All clear | Next layer or ship to production |
Review any observations classified as Process in Step 2. For each:
Document the pattern in lessons-learned/process/<observation>.md with:
Update product context — add a process_learnings entry to topology.routing in product-context.yaml:
process_learnings:
- pattern: "<description>"
mitigation: "<what to do differently>"
discovered_at: "<date>"
Propose skill amendments — if the pattern warrants changes to skill files (e.g., adding a guardrail, changing a phase step), record the proposed amendment in the changelog section:
- date: YYYY-MM-DD
type: process-improvement
summary: "Proposed skill amendment: <description>"
proposed_changes:
- skill: "<skill name>"
change: "<what to add/modify>"
rationale: "<why>"
Do not auto-edit skill files. Skill changes are sensitive — the human reviews and applies proposed amendments.
Based on the reflection outcome, proceed to one of:
/aep-dispatch — pick and execute new stories (bugs or refinements enter the dispatch queue)/aep-envision — update product assumptions/aep-map — update system architecture/aep-calibrate — recalibrate a specific quality dimension (visual design, UX flow, API surface, etc.)npx claudepluginhub memorysaver/agentic-engineering-patterns --plugin agentic-development-workflowProvides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.