.agents/skills/upgrade/SKILL.md
Upgrade a previously bootstrapped or adopted project when the architecture evolves. Diffs the current architecture rules against the project's last locked review, identifies new or changed rules, and proposes incremental changes. Triggers on phrases like "upgrade my project", "sync with latest architecture", "update to new rules", "upgrade tseng", or "architecture changed, update my project". Also invocable via the /tseng:upgrade slash command.
npx skillsauth add kagenti/humr upgradeInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
echo "Architecture docs: ${CLAUDE_SKILL_DIR}/architecture/"
echo "Version: $(cat "${CLAUDE_SKILL_DIR}/VERSION")"
Upgrades an existing project that previously ran bootstrap or adopt to reflect evolved architecture rules. Reads the last locked review record, diffs it against the current architecture docs, and creates a new review record for the delta.
The target project must have at least one locked review in tseng/reviews/. Read tseng/reviews/index.md to find the latest locked review. If no locked reviews exist, tell the user to run /tseng:adopt first — there's nothing to upgrade from.
The current tseng version is shown above (injected from the VERSION file).
Generate a fresh checklist from the current architecture docs:
architecture/index.md from the architecture docs directory (shown above).tseng/ files, no inferred rules).Do NOT write this checklist to disk yet.
Read the project's last locked review from tseng/reviews/ (the highest-numbered record with status: locked).
Compare the freshly generated checklist against the locked review's items:
Compare the tseng version from the locked review (tseng_version metadata) against the current version. If they match and there are no new/changed rules, tell the user the project is already up to date and stop.
Read tseng/adoption.md if it exists. Each discarded entry includes a user-provided reason (e.g., "will adopt after auth migration", "not relevant for this project"). Use these reasons to make informed decisions:
Determine the next review number from tseng/reviews/index.md.
Write the new review to tseng/reviews/NNN.md. The checklist should contain:
[x] in the last locked review and are unchanged remain [x] (carried forward)[ ]# Review #NNN
<!-- tseng_version: {version} -->
<!-- status: open -->
<!-- created: {YYYY-MM-DD} -->
<!-- based_on: #PPP -->
Generated from architecture docs (tseng v{version}).
Upgrade from review [#PPP](PPP.md) (tseng v{previous_version}).
## New Rules
- [ ] {new rule 1}
- [ ] {new rule 2}
## Changed Rules
- [ ] {changed rule 1} (was: "{old wording}")
## Unchanged (carried forward from #PPP)
- [x] Uses tRPC for API layer
- [x] Uses Zod for input validation
- [ ] Some previously failing rule
- ...
## Removed Rules (informational)
- ~~{removed rule}~~ — no longer in architecture docs
Update tseng/reviews/index.md with the new row (status: open).
Launch a subagent to audit only the new and changed items against the project:
You are auditing a TypeScript project at {project_path} against a checklist of architecture rules.
Go through EVERY item below. For each one:
- Check the project files to determine if the rule is satisfied
- Mark it ✅ (pass) or ❌ (fail) or ⚠️ (partially met / not applicable)
- Cite the specific file and line that proves your assessment
- If it fails, briefly say what's wrong
Do NOT check anything beyond this list. Do NOT add suggestions, improvements, or opinions. Only verify what's listed.
CHECKLIST:
{new_and_changed_items}
From the audit results, collect all ❌ and ⚠️ items that are NOT in the discarded list (respecting the changed-rule exception from Phase 4). Group them into concrete change proposals:
Present proposals to the user as a numbered list. Each proposal should include:
Ask the user which proposals to accept and which to discard. The user can respond with numbers, ranges, "all", or "none".
For any discarded proposals, ask the user for a brief reason (e.g., "will cover this later", "using a different pattern intentionally", "not relevant for this project"). This context is recorded in adoption.md so future upgrade runs can understand why something was rejected.
For each accepted proposal, make the actual code changes. Follow the architecture docs as the source of truth.
Update tseng/reviews/NNN.md:
[x] — rule satisfied (passed audit, carried forward, or just applied)[ ] — rule not satisfied (user discarded or remains unaddressed)<!-- status: locked -->
<!-- locked: {YYYY-MM-DD} -->
tseng/reviews/index.md to show locked status.Once locked, the review is a permanent, immutable record.
Update tseng/adoption.md — merge new applied/discarded items with existing content. Don't lose previously recorded items. Include the review number for traceability:
# Adoption State
## Applied
- [rule description] — applied on [date] (review #NNN)
- ...
## Discarded
- [rule description] — discarded on [date] (review #NNN)
> Reason: [user-provided context, e.g. "will adopt after auth migration"]
- ...
## Remaining
- [rule description]
- ...
If any rules were removed from the architecture, move their entries from Applied/Remaining to a ## Retired section — they no longer apply but the historical record is preserved.
tseng/reviews/index.md doesn't exist or has no locked reviews, redirect to /tseng:adopt./tseng:upgrade multiple times. Each run reads the last locked review and creates a new one.development
Create a PRD through user interview, codebase exploration, and module design, then submit as a GitHub issue after user approval. Use when user wants to write a PRD, create a product requirements document, or plan a new feature. Always present the PRD for user approval before submitting.
development
Spec out a feature or change with full knowledge of the opinionated TypeScript architecture and the project's adoption state. Conducts a thorough discovery interview to understand domain concerns, bounded contexts, and application services, then produces a high-level architectural specification — never concrete implementation details. Triggers on phrases like "spec this feature", "design this change", "architect this", "help me spec", "what modules do I need", or "think through this feature". Also invocable via the /tseng:spec slash command.
development
Review an existing TypeScript project against the opinionated architecture rules. Use when the user asks to review, audit, check, or validate their project's architecture. Triggers on phrases like "review my project", "check the architecture", "audit my code structure", "validate my project", or "does my project follow the rules". Also invocable via the /tseng:review slash command.
testing
Use when completing tasks, implementing major features, or before merging to verify work meets requirements