Skip to content

feat: offer /devup-retro at the end of the final completion report - #127

Merged
owjs3901 merged 1 commit into
mainfrom
devfive/3099154426bffbeef8b62999b80bb038/devup-retro-offer
Nov 10, 2026
Merged

owjs3901 merged 1 commit into
mainfrom
devfive/3099154426bffbeef8b62999b80bb038/devup-retro-offer

Conversation

@devfive-relay-c70423

Copy link
Copy Markdown
Contributor

Follow-up to #126 (merged). User request: when work that used devup-mcp is finished, show a short message offering /devup-retro, so there is always a path to keep improving.

What the user sees

At the end of the agent's final completion report, once, in the user's language:

작업이 완료되었습니다. 지금까지 진행한 내용을 개선하기 위해 /devup-retro 를 실행할까요?

The work is complete. Shall I run /devup-retro to turn this session's follow-up prompts into devup-mcp improvements?

The invocation is the one that works in the workspace: /devup-retro when the skill is installed, otherwise the MCP prompt form /mcp__<server>__devup-retro.

Where the rule lives

  • Contract: new requirement identifier offer-devup-retro-in-final-report (developmentContract v5, 21 requirements), explained in delivery-quality's identifier table and a new section "Final report: offer the retrospective".
  • Skills: devfive-frontend ("Links, controls and completion evidence"), devup and devup-implementation-plan (the final-report step), the OpenCode /devup command file.
  • Guide: devup://guide/usage ("After the work: /devup-retro") and the completion document.
  • Tool results: a result that marks completion carries nextSuggestedAction:
"nextSuggestedAction": {
  "id": "devup-retro",
  "invocation": "/devup-retro",
  "skillInstalled": true,
  "message": { "ko": "작업이 완료되었습니다. 지금까지 진행한 내용을 개선하기 위해 /devup-retro 를 실행할까요?", "en": "The work is complete. Shall I run /devup-retro to ..." },
  "when": "final-completion-report",
  "how": "End the final completion report ... once per completed task ... Never run it yourself ..."
}

It is attached in exactly three places, decided by one function (skills::marks_completion):

Tool Condition
devup_runtime_audit action completion receipt with reportAllowed: true (stage data-verified)
devup_screen_plan action status completion.reportAllowed: true (already re-evaluates application completion)
devup_stack_diff all four layers present, each checked: true, zero drifts

Deliberately not attached

The brief listed deliverable.isFinal and devup_ui_validate as examples. I left both out, because they would break the "don't nag" requirement:

  • deliverable.isFinal grades generated source only; the completion document already says it never means the application is finished. An export is the first step of a task and happens once per frame.
  • A clean devup_ui_validate is run many times per URL during the work.

Both are covered by a test that they never mark completion. If you want the hint there too, it is one match arm in marks_completion.

Don't-nag rules (in the text and in the hint)

Once per completed task; not after an intermediate call, a failure or an unresolved item; not again once asked; never run unasked.

Budgets

  • Bootstrap INSTRUCTIONS untouched: 1497 / 1500 bytes; a test asserts the command is not named there.
  • Export reply: 14117 bytes locally with the new identifier; the 1024-byte headroom test passes (limit 14336). The export itself carries no hint.
  • All .rs files stay under 1000 lines.

Tests

  • only_three_results_mark_completion: receipts, statuses and stack diffs with real shapes; non-final receipt, non-status action, drifted / skipped / partial stack, export with isFinal: true and a clean validation all return false
  • only_a_completion_result_carries_the_offer, an_installed_skill_is_offered_as_the_slash_command: hint present only when complete; MCP prompt form vs slash command; exact Korean message
  • every_completion_text_states_the_offer_and_its_limits: delivery-quality, devfive-frontend, devup, devup-implementation-plan, guide and the OpenCode command contain the Korean and English sentence, the prompt form, "once" and "never run"
  • completion_tests: the real data-verified receipt marks completion
  • export_project_theme: export reply has no nextSuggestedAction; 21 identifiers; headroom
  • retro_command (stdio process): stack diff with nothing to compare, skills status and retro carry no hint
  • contract test: identifier present and explained; version 5

Local (Windows): cargo insta test --workspace --all-features --check 2325 passed, 0 failed, 2 ignored; clippy -D warnings and fmt clean; node tests 82 pass.

Manifest bytes/sha256 updated for the four edited skill documents; changepack added (Minor).

🤖 Generated with Claude Code


Submitted via Devfive hub. Employee: ; device: 3099154426bffbeef8b62999b80bb038

When work that used devup-mcp is complete, the agent ends its final report
with one question in the user's language offering the retrospective.

- contract identifier offer-devup-retro-in-final-report (v5), stated in
  delivery-quality, devfive-frontend, devup, devup-implementation-plan,
  the OpenCode command and the usage guide
- nextSuggestedAction on results that mark completion: runtime-audit
  completion reportAllowed, screen-plan status reportAllowed, stack-diff
  zero drift on every layer; never on exports, validation or failures
- invocation is /devup-retro when the skill is installed, otherwise the
  MCP prompt form

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
@owjs3901
owjs3901 marked this pull request as ready for review November 10, 2026 12:39
@owjs3901
owjs3901 merged commit b2ec165 into main Nov 10, 2026
9 checks passed
@owjs3901
owjs3901 deleted the devfive/3099154426bffbeef8b62999b80bb038/devup-retro-offer branch November 10, 2026 12:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant