chore(#109): project-configurable ticket / branch / commit / PR schema#118
Merged
Conversation
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
Lifts prefix / type whitelists that were hardcoded across multiple skills, hooks, and CI into a versioned JSON config read through a shared shell library. This is the foundation ticket for the enforcement-hook wave (#107, #110, #111, #112, #113, #114, #115) — they all need a consistent place to read project-level config from.
.claude/project-config.defaults.json(v1 schema, committed upstream).claude/hooks/_lib-read-config.sh(used by hooks + skills + future)docs/project-config.mddocs/agdr/AgDR-0006-project-configurable-ticket-schema.mdvalidate-branch-name.sh,validate-commit-format.sh,validate-pr-create.sh— now read their whitelists from config/feature,/task,/bugRules sections reference the config location rather than hardcoding the listBackward-compat:
validate-commit-format.shpreviously did ad-hoc reading of a flatcommit_typestop-level key. That fallback is kept so forks that customised before this ticket keep working without edits.Merge semantics: shallow at the top level (v1). Teams override by copying a subtree. Deep merge deferred — revisit if pain warrants. See AgDR-0006 for the full rationale, including why the schema lives in
.claude/project-config.*.jsonand not inonboarding.yaml.Testing
Smoke-tested locally end-to-end against the four migrated consumers:
No CI-level tests added; the config-reader lib is covered by downstream hook tests (added in #110 and #115). A dedicated test fixture for the lib itself would be a nice-to-have follow-up.
Scope — what this does NOT do
.claude/project-config.jsonoverride.commit_typeskey. That's a separate follow-up once adoption is measurable.Glossary
.claude/project-config.*.json. Defaults ship upstream; overrides live per-fork._schema_version; future migrations will honour it.[Feature],[Chore], etc.) that ticket-creation skills accept and the issue-structure validator enforces against.Closes #109