feat(skills): add standardize-repo skill#13
Merged
Conversation
A Claude Code skill that applies the harmon-init Copier template's conventions to repos, in three modes: - new-repo: scaffold a brand-new repo from harmon-init - adopt-existing: retrofit the template into an existing repo - audit: report and reconcile drift from the standards It also bundles the authoritative repo-conventions catalog (references/standards-catalog.md) — the desired attributes for any repo, tagged [copier] (auto-applied) vs [manual] (agent follow-up). Layout: SKILL.md (router + cardinal copier rules) + references/ (standards-catalog, the three mode guides, copier-gotchas, post-generation-checklist) + assets/ (detect-project-type.sh, verify-applied.sh, both shellcheck/shfmt-clean and macOS bash 3.2 portable). Authored and adversarially verified via an ultracode workflow against the live source repos (harmon-init, harmon-infra, sommerlawn-web). Symlinked into ~/.claude/skills for global discoverability; cataloged in README. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Per the convention that .yml vs .yaml is left to each tool's own default (don't normalize repo-wide), corrected the standardize-repo skill: - standards-catalog.md: replaced "YAML uses .yml (not .yaml)" with "follow each tool's own convention"; reframed the divergences "file extensions" entry as by-design, not drift. - mode-audit.md: drift class E is now "NOT drift; do not flag" instead of ".yaml -> .yml"; removed `git mv *.yaml *.yml` from the reconciliation list. - mode-adopt-existing.md: replaced the "rename drifted YAML extensions" step with "leave YAML extensions alone". Detection that accepts both extensions (verify-applied.sh, detect-project-type.sh) is unchanged. Mirrors harmon-init PR #81. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… Coder - post-generation-checklist.md: the devcontainer secret standard is 1Password Environments (mounts a virtual .env at .devcontainer/devcontainer.env over a UNIX pipe; never on disk/git) with the per-profile var list; corrected the init-env.sh description (it enforces the allow-list + seeds from host env on Coder — it does not call op); added a Coder step (org-level workspace template, repo + secret parameters → host env → init-env). - standards-catalog.md: same 1Password Environments correction in the devcontainer section + a Coder entry; points at the generated repo's docs/guides/devcontainers.md for the full walkthrough. Mirrors harmon-init PR #82. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
A Claude Code skill that turns "apply my repo standards" into a repeatable, agent-runnable operation. It applies the harmon-init Copier template's conventions to repos, in three modes, and bundles the authoritative catalog of desired repo attributes (the part that doubles as living documentation of the standards).
Lives at
ai/skills/repo/standardize-repo/(alongsidedesign/), symlinked into~/.claude/skills/for global discoverability, and cataloged in the README AI-assets table.Modes (one skill, routed from SKILL.md)
copier copy --vcs-ref=HEAD→ reconcile drift on a branch)Layout
How it was built
Authored and adversarially verified via an ultracode workflow (9 artifacts × draft + independent verifier, 18 agents) against the live source repos. The verifiers caught and fixed real issues (a
--vcs-ref=HEADcontradiction in mode-new-repo.md; two catalog inaccuracies).Verification
shellcheck --severity=error+shfmtclean on both scripts; macOS bash 3.2 portable.SKILL.mdfrontmatter parses; all sibling references resolve.detect-project-type.sh: harmon-infra →iac, sommerlawn-web →web-astro.verify-applied.sh: exit 0 on a compliant fixture; nonzero on real failures and on a drifted repo (graceful WARN when task/gitleaks absent).Notes
ansible-linthook was skipped (ModuleNotFoundErrorin the local pre-commit cache — unrelated to this change, which has no ansible files).verify-applied.shsurfaced a real harmon-init bug during testing:trim_blockseats the newline after the trailing[% endif %]intemplate/LICENSE.jinja, so generated repos'LICENSEhas no final newline and fails their ownlint:hygiene. Tracked for a separate harmon-init fix.🤖 Generated with Claude Code