From b7b5643cc9db2f0f869b3b550926db34d2df3fed Mon Sep 17 00:00:00 2001 From: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com> Date: Mon, 3 Aug 2026 12:52:44 -0700 Subject: [PATCH] feat(goalify): write condition to file, move next-step to end of output MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Output format now: 1. Write the composed condition to .amplifier/goals/.md (creating the directory if needed), stating the path written. 2. Render the same condition inline in a fenced code block (unchanged). 3. Lint table (unchanged). 4. Recommended next step, now last: offer /goal @ framed as the step to take once any edits to the file are saved. Previously the offer to run /goal was the last line before the file-write change (there was no file write); the lint table was the last thing rendered. Proximity to the user's next input now lands on the copy-pasteable /goal @ command instead of the lint table. Phase 1-3 (extract/compose/lint) are unchanged. Verified against the two known-bad example fixtures in examples/ via a live amplifier run --mode single subprocess: the L1 fixture still fires L1 (plus L5/L0) on the as-given text, and the L2 fixture still fires L2 and L0 on the as-given text, before the skill's existing rewrite-and-relint loop clears them. Bump version 1.1.0 -> 1.2.0. 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com> --- .../data/skills/goalify/SKILL.md | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/amplifier_app_cli/data/skills/goalify/SKILL.md b/amplifier_app_cli/data/skills/goalify/SKILL.md index 34b6cb0..d08f792 100644 --- a/amplifier_app_cli/data/skills/goalify/SKILL.md +++ b/amplifier_app_cli/data/skills/goalify/SKILL.md @@ -8,7 +8,7 @@ description: > goal condition", "make this a /goal", "turn this into a goal", or asks for help wording a condition for /goal. user-invocable: true -version: 1.1.0 +version: 1.2.0 license: MIT --- @@ -163,9 +163,23 @@ Do not present a condition that still fails a BLOCKER. ## Output format -Always output the condition inside a fenced code block — terminal reflow -will otherwise destroy its multi-line structure. Follow it with the lint -report as a table, then offer (do not auto-run) `/goal`. +Produce output in this exact order: + +1. **Write the file.** Write the condition text to + `.amplifier/goals/.md` (create the directory if it does not exist), + where `` is a kebab-case slug (≤ 40 chars) of the one-sentence + outcome. Overwrite if the file already exists. State the path on its own + line, e.g. `Wrote: .amplifier/goals/usable-checkout-flow.md`. +2. **Render inline.** Immediately after, show the same condition inside a + fenced code block — terminal reflow will otherwise destroy its + multi-line structure. +3. **Lint table.** Follow with the lint report as a table. +4. **Next step, last.** End the entire response with the recommended next + step and nothing after it: offer (do not auto-run) `/goal @` using + the path from step 1, framed as what to run once any edits to the file + are made and saved. + +Wrote: `.amplifier/goals/.md` ``` @@ -184,5 +198,7 @@ report as a table, then offer (do not auto-run) `/goal`. A clean table means no *known* failure pattern was detected — not that the condition is validated. Say so if the user reads it as a guarantee. -Then: "Pass this to `/goal` to start the loop — want me to run it now, or +Edit `.amplifier/goals/.md` directly for any changes. Then, as the +last line of the response: "Once you're happy with the file, run `/goal +@.amplifier/goals/.md` to start the loop — want me to run it now, or would you like to adjust anything first?"