Install
openclaw skills install @xiluoduyu/implementation-self-reviewUse after an implementation pass to self-review responsibility boundaries, necessity, defensive branches, naming, tests, documentation iteration scope, and same-class issues before final delivery.
openclaw skills install @xiluoduyu/implementation-self-reviewRun this skill after the first implementation pass, before final delivery, or when the user questions code organization, necessity, naming, defensive checks, iteration scope, or repeated rework. Treat it as a compact engineering self-review, not a broad rewrite mandate.
Use this skill when:
Do not use this skill when:
Before reviewing, gather:
If changed files or a diff are unavailable, say the review is limited to the visible summary and avoid making file-specific claims.
Ask:
Prefer existing local patterns and compact organization. Add a new file only when it clarifies a real responsibility boundary or avoids meaningful crowding.
For each new type, field, interface, config, abstraction, helper, and state value, ask:
Flag overdesign explicitly. Prefer removing unused structure over documenting why it might be useful later.
For each nil, empty, default, fallback, or defensive branch, ask:
Keep defenses at entry/configuration boundaries. Avoid internal defensive checks that make ownership unclear.
For long names or repeated terms, ask:
Prefer clean domain names over stacked qualifiers.
For each error path, ask:
Prefer explicit error semantics over catch-all internal errors.
For important state changes, security boundaries, external calls, and failure paths, ask:
Prefer concise boundary logs over noisy internal logs.
For each new configuration or secret, ask:
Prefer fewer configuration knobs. Add configuration only when deployment variance is real.
When the change introduces state transitions, one-time use, creation, exchange, or idempotency, ask:
Prefer explicit state transitions and tested invariants over implicit best-effort behavior.
For tests added or changed, ask:
Prefer behavior-focused tests that explain why the rule exists.
When code changes behavior, contracts, configuration, API shape, defaults, or operational expectations, ask:
Prefer keeping code, tests, and current-fact docs aligned over treating documentation as a separate cleanup task.
When the user points out one issue, scan for the same class before editing:
Tell the user what same-class scan was done, then make one coherent pass where possible.
When the repository has its own documented feature-planning convention, follow that convention first. If the repository has no explicit convention, use this default cross-project structure:
docs/plans/<feature>/
README.md
design.md
implementation-plan.md
iterations/
01-initial.md
review*.md
Default file responsibilities:
README.md: the single entry point for the feature docs; records current status, timeline, document navigation, and maintenance rules.design.md: the current effective design only; do not stack rejected proposals, old configs, or historical alternatives here.implementation-plan.md: current implementation state, remaining gaps, tasks, acceptance criteria, and executable verification.iterations/: historical evolution records; use numbered files such as 01-initial.md, 02-*.md, 03-*.md.review*.md: review records and quality context; useful history, but not the current design source of truth.Before adding a new feature iteration document, ask:
If the current iteration is still in progress, treat most contract wording or rule changes as adjustments to that iteration rather than creating a new iteration. Do not let rejected temporary designs pollute current design.md.
Add a new iteration when the change alters a settled capability boundary, responsibility boundary, algorithm, configuration semantics, or default behavior. Do not add a new iteration for ordinary bug fixes, test additions, local renames, or corrections to an unsubmitted/current iteration unless they change the current contract.
When an iteration changes the active contract, update all current-fact documents together: README.md, design.md, and implementation-plan.md. Keep rejected or superseded approaches in iterations/, and mark them as not adopted if they are listed in the timeline.
Before delivery, scan current-fact docs for stale wording in the language used by the project. Include at least these meaning groups:
待确认, to be confirmed, TBD, open question, pending confirmation.旧配置, legacy config, old config, previous behavior, legacy behavior.已废弃, deprecated, removed, obsolete, no longer used.后续实现应, should implement later, future implementation should, to be implemented.If the same concern has been revised five or more times, pause and tell the user:
This point has been revised at least five times. The contract still looks unstable; I recommend pausing implementation and realigning responsibility boundary, necessity, and acceptance criteria before more edits.
Do not keep pushing through by inventing more implementation changes.
Use this order:
Keep the report concise. Do not turn this skill into a full code review unless the user asked for a review.
Example:
Findings:
- P1 path/to/file.go:42: The retry branch can execute a non-idempotent operation twice; move idempotency to the use-case boundary or storage constraint.
Same-class scan:
- Checked related retry and creation paths; no second non-idempotent retry path found.
Required fixes:
- Add an idempotency guard before retrying the operation.
Norms checked:
- Boundary And Defense Gate, State And Concurrency Gate, Test Intent Gate.
Verification:
- Still needed: go test ./...
If there are no findings, state that directly, then list any residual risk and verification still needed.