원클릭으로
manifest-commit
// Write knowledge-transfer git commits for Manifest projects. Use when making git commits. Commits include a typed subject line and a detailed body explaining what changed, why, and how.
// Write knowledge-transfer git commits for Manifest projects. Use when making git commits. Commits include a typed subject line and a detailed body explaining what changed, why, and how.
| name | manifest-commit |
| description | Write knowledge-transfer git commits for Manifest projects. Use when making git commits. Commits include a typed subject line and a detailed body explaining what changed, why, and how. |
Write a git commit for the current changes. In Manifest, commits are knowledge transfer — the primary way agents and humans understand what happened and why.
<type>(<scope>): <summary>
type REQUIRED. feat, fix, docs, refactor, chore, test, perf.scope OPTIONAL. The area affected: a feature name, manifest, cli, config, etc.summary REQUIRED. Imperative, <= 72 chars, no trailing period.Every commit gets a body unless it's a one-character typo fix. The body is how the next agent learns what you did. Write it for someone (or something) reading git log weeks from now with no other context.
What to include:
See .pi/plans/2026-02-15-feature.mdExample — feature:
feat(auth): add JWT token validation with RS256 signatures
Tokens are parsed and verified in a single pass to avoid double
deserialization. Invalid tokens return structured error responses
with specific failure reasons (expired, malformed, bad signature)
to help client-side debugging.
Expiry tolerance is 30s by default to account for clock skew.
This is configurable via config/manifest.ts `jwtExpiryTolerance`.
Files: manifest/server.ts (auth check in request handler),
services/jwt.ts (new), features/Login.ts (updated to
return token), config/manifest.ts (new jwt fields).
Example — bug fix:
fix(registration): handle null displayName from OAuth providers
OAuth providers can omit the display name field entirely. The
registration feature assumed it was always present because the
input schema marks it required — but OAuth-sourced registrations
bypass input validation and pass data directly.
Added nullish coalescing with fallback to email username part.
This only affects the OAuth code path; normal registration still
validates displayName as required.
Root cause: features/UserRegistration.ts line 34 accessed
input.displayName without a null check in the OAuth branch.
Example — framework update from upstream:
chore: cherry-pick framework updates from manifest branch
Cherry-picked from manifest branch (manifest-sync-2026-02-15..HEAD):
Picked:
- abc1234 feat(router): add wildcard route matching
- def5678 fix(validator): handle nested object validation
Skipped:
- ghi9012 feat(extensions): add blog extension (not relevant to this project)
Adapted:
- abc1234 (router): upstream added wildcard routes. Adapted to coexist
with our prefix-based tenant routing (services/tenantRouter.ts).
All tests pass. tsc clean. manifest check clean.
git status and git diff --staged (or git diff if nothing staged) to understand the changes.git log -n 20 --pretty=format:"%s" to match the project's existing scope conventions.git add <files> (all changes if none specified).git commit -m "<subject>" -m "<body>"In most projects, commit messages are an afterthought. In Manifest, they're infrastructure. The commit history is:
git log to understand what happened recently, what's been fixed, what's been changed. Vague messages like "fix stuff" or "update" are dead ends.git log --oneline -- features/UserRegistration.ts shows exactly what changed and why. Good messages make git bisect unnecessary.A commit message in Manifest is not a description of what you typed. It's a letter to the next agent explaining what you did and why.
Contribute framework improvements back to the upstream Manifest repo via PR. Use when the user says "contribute back", "open a PR upstream", "send this fix upstream", or wants to share a framework improvement.
Work with Manifest's frontend system — building, serving, dev workflow, debugging, and presets. Use when creating pages, components, debugging frontend errors, or configuring the build.
Structured implementation flow for Manifest features — from investigation through execution with subagents. Follows the full chain: investigate → clarify → explore → validate → plan → todos → branch → execute → review. No shortcuts. Invoke manually when building a new feature or significant change in a Manifest project.
Reflect on recent large changes and check if the rest of the codebase needs to catch up. Use after adding features, installing extensions, changing services, updating schemas, or making any significant structural change.
Resolve merge conflicts from upstream syncs or other merges. Preserves application identity while accepting framework and tooling improvements. Use when you see merge conflict markers or the user says "resolve conflicts", "fix merge", or "merge conflict".
Code review guidelines and quality rubric for Manifest projects. Covers framework conventions, feature structure, schema quality, and security. Shared by the reviewer subagent and available for manual reviews. Use when reviewing code changes.