Skip to content

fix(implementation): demote Clean-Architecture layer names to an example#457

Merged
kyle-sexton merged 3 commits into
mainfrom
fix/404-layer-vocab-agnostic
Jul 19, 2026
Merged

fix(implementation): demote Clean-Architecture layer names to an example#457
kyle-sexton merged 3 commits into
mainfrom
fix/404-layer-vocab-agnostic

Conversation

@kyle-sexton

@kyle-sexton kyle-sexton commented Jul 19, 2026

Copy link
Copy Markdown
Contributor

Problem

The implementation plugin's implement skill baked Core/Domain/Application/Infrastructure — .NET / DDD / Clean-Architecture vocabulary — into text presented as a universal execution order:

  • plugins/implementation/skills/implement/SKILL.md (Dependency direction) — "Implement inner layers first (Core/Domain), then outer layers (Application/Infrastructure)"
  • plugins/implementation/skills/implement/context/feature.md (step 3) — "Inner layers first — implement Core/Domain types before Application/Infrastructure"

A consumer without a layered architecture (Rails, Go, a data pipeline, an SPA) gets an opinion that does not map, breaking the repo-agnostic design boundary (PLUGIN-PHILOSOPHY "Design boundary": runtime behavior must not assume an undocumented consumer layout).

Fix

Keep the agnostic principle and restate it as dependency direction — implement the depended-upon components before the ones that depend on them, respecting the project's own dependency direction — then demote the Clean-Architecture layer names to a clearly-marked ".NET, for example" illustration. No routing/contract change; the guidance still lives inline.

Bumps the implementation plugin to 0.7.1 with a matching CHANGELOG entry so existing installs receive the rewritten prompts.

Verification

  • markdownlint-cli2@0.23.0 (repo-pinned) on all changed markdown files: 0 errors.
  • plugin.json validated as parseable JSON; version 0.7.0 -> 0.7.1.

Related

Closes #404

The implement skill baked Core/Domain/Application/Infrastructure — .NET/DDD/
Clean-Architecture vocabulary — as a universal execution order. A consumer
without layered architecture (Rails, Go, data pipeline, SPA) got an opinion
that does not map, breaking the repo-agnostic design boundary.

Restate the universal principle as dependency direction (implement
depended-upon components before their dependents, respecting the project's
own dependency direction) and demote the Clean-Architecture layer names to a
clearly-marked ".NET, for example" illustration.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@claude

claude Bot commented Jul 19, 2026

Copy link
Copy Markdown

Claude finished @kyle-sexton's task in 1m 4s —— View job


PR Review

  • Gather context from PR metadata
  • Read changed files
  • Review diff for correctness and alignment with guidelines
  • Post findings

Summary: This is a clean, correctly-scoped fix. The change precisely addresses the problem stated in #404 — baking Clean-Architecture vocabulary into guidance presented as universal — and restates the principle in a vocabulary-agnostic way. No unrelated changes.


What changed

SKILL.md L90 — "Dependency direction" subsection:

  • "layers" → "components"; the principle is now stated as implement depended-upon components before their dependents, which maps to any architecture.
  • Clean-Architecture vocabulary moved to a clearly-marked ".NET/Clean-Architecture app, for example" clause.
  • Closing sentence explicitly restates that projects with different structures apply the same principle to their own layout — useful for a consumer reading the section cold.

feature.md L9 — Step 3:

  • Heading changed from **Inner layers first** to **Depended-upon parts first** — the heading itself was the most prominent signal of the bias, and this fixes it.
  • Body follows the same pattern: agnostic principle first, .NET example clearly demoted with "for example."

Evaluation

Correctness: The universal principle ("implement the depended-upon components before the ones that depend on them") is stated accurately in both files. The .NET example is clearly illustrative, not prescriptive. No functional change to the guidance for .NET consumers — same advice, now correctly framed.

Repo-agnostic design rule (PLUGIN-PHILOSOPHY): Fix directly addresses the "runtime behavior must not assume an undocumented consumer layout" boundary. A Rails, Go, or SPA consumer no longer receives an opinion that doesn't map.

Consistency between the two changed files: Both files now use the same structure (agnostic principle → "for example" .NET illustration). Minor asymmetry: SKILL.md adds "a project with a different structure applies the same principle to its own layout" as a closing sentence; feature.md omits it. The omission is fine — feature.md's opening clause ("following the project's own dependency direction") already establishes the scope, so the example reads as an illustration rather than a rule.

No issues found. The diff is minimal, targeted, and does not touch routing, contracts, or anything unrelated to the stated fix.


Verdict: approved. Ready to merge.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a998aafd04

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread plugins/implementation/skills/implement/SKILL.md
Version bump and CHANGELOG entry so existing installs receive the rewritten
prompts from the Clean-Architecture layer-vocabulary agnosticism fix.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@claude

claude Bot commented Jul 19, 2026

Copy link
Copy Markdown

Claude finished @kyle-sexton's task in 1m 3s —— View job


PR Review (updated — v0.7.1 bump commit reviewed)

  • Gather context from PR metadata
  • Read changed files (version bump + CHANGELOG)
  • Verify diff for correctness and alignment with guidelines
  • Post findings

The PR now has two commits. The first was already reviewed and approved. This review covers the second commit (e4b2516) which responds to the Codex P1 finding about the missing version bump.

What changed in the new commit

plugin.json L4version: "0.7.0""0.7.1". Correct semver level: a patch bump for a non-breaking behavioral tweak to skill text. Addresses the Codex P1 finding directly — existing consumers running a marketplace update will now receive the rewritten guidance.

CHANGELOG.md L6–L17 — New [0.7.1] section added under ### Changed. The entry:

  • Follows Keep a Changelog format consistently with all prior entries (no dates, matching the existing convention) ✓
  • Names both changed files with their section paths so a consumer can locate the change ✓
  • States the principle introduced ("implement depended-upon components before their dependents") so the entry is self-contained ✓
  • Cites docs/PLUGIN-PHILOSOPHY.md as the design boundary — correctly attributes the motivation ✓

Evaluation

Correctness: Version bump and CHANGELOG are internally consistent with each other and with the skill changes from the first commit. Nothing mismatches.

Delivery contract: The manifest version is the update cache key. With 0.7.1 in plugin.json, consumers running /plugin marketplace update will receive the rewritten guidance. The P1 Codex finding is fully resolved.

Scope discipline: The bump commit touches only the two files it needs to touch — plugin.json and CHANGELOG.md. No unrelated changes.

No issues found.


Verdict: approved. Both commits are clean and correct. Ready to merge.

# Conflicts:
#	plugins/implementation/CHANGELOG.md
@claude

claude Bot commented Jul 19, 2026

Copy link
Copy Markdown

Claude finished @kyle-sexton's task in 1m 21s —— View job


PR Review (post-merge update — v0.7.2)

  • Gather context from PR metadata and prior review history
  • Read changed files (post-merge state)
  • Review diff for correctness and alignment with guidelines
  • Post findings

This review covers the merge commit (eefd6cf) that resolved the version collision: 0.7.1 was already published to main via PR #453 (branch-naming grammar), so this PR was rebumped to 0.7.2. The substantive skill changes were reviewed and approved in the two prior passes; this pass verifies the merge resolved correctly and that no issues were introduced.

What changed in the merge commit

plugin.json L4version: "0.7.1""0.7.2". Correct: main's [0.7.1] entry is the branch-naming fix from #453; this PR's layer-vocab change needed a distinct cache key.

CHANGELOG.md L6[0.7.1] entry from main preserved; new [0.7.2] section sits above it. Version ordering is correct (descending). Format is consistent with all prior entries. The CHANGELOG now correctly records both the branch-naming fix (0.7.1) and the layer-vocab change (0.7.2) as separate, distinct deliveries.

Final state of the skill files (unchanged by merge)

SKILL.md L90 — agnostic principle first, .NET/Clean-Architecture example clearly framed with "for example," closing sentence explicitly restates applicability to other structures. ✓

feature.md L9 — heading updated to **Depended-upon parts first**; body follows same structure as SKILL.md. The opening phrase "following the project's own dependency direction" establishes scope before the example; the omission of the explicit "different structure" closing sentence is fine in context. ✓

Evaluation

Merge correctness: The conflict was resolved cleanly. The CHANGELOG now has both [0.7.1] (from main) and [0.7.2] (from this PR) in correct descending order. The manifest version matches the new CHANGELOG entry.

Delivery contract: With 0.7.2 in plugin.json, existing consumers on 0.7.1 (the branch-naming fix) will receive this layer-vocab change on their next update. Consumers on 0.7.0 or earlier receive both fixes in one update.

Repo-agnostic design rule (PLUGIN-PHILOSOPHY): Satisfied. The guidance no longer prescribes a layout consumers may not have.

No issues found. The merge was executed correctly, the version collision is resolved, and the full PR is clean across all three commits.


Verdict: approved. All three commits are correct and internally consistent. Ready to merge.

@kyle-sexton
kyle-sexton merged commit 557fcc6 into main Jul 19, 2026
15 checks passed
@kyle-sexton
kyle-sexton deleted the fix/404-layer-vocab-agnostic branch July 19, 2026 18:14
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.

implementation: Clean-Architecture layer vocabulary baked as universal execution order

1 participant