Skip to content

feat: joy-check public migration with 100% CI gate#634

Merged
notque merged 4 commits into
mainfrom
feat/joy-check-public-migration
May 10, 2026
Merged

feat: joy-check public migration with 100% CI gate#634
notque merged 4 commits into
mainfrom
feat/joy-check-public-migration

Conversation

@notque
Copy link
Copy Markdown
Owner

@notque notque commented May 10, 2026

Summary

  • Joy-check moved to public repo at skills/code-quality/joy-check/ — was in private-skills/ (gitignored, invisible to GitHub Actions)
  • 100% threshold — zero tolerance for negative framing patterns in skills and agents
  • CI gate — 179-test fleet scan runs on every PR touching .md files
  • PHILOSOPHY.md updated — new "Positive Framing as CI Gate" section

Files

File What
skills/code-quality/joy-check/SKILL.md Skill definition, 100% threshold
skills/code-quality/joy-check/references/instruction-rubric.md 7 primary patterns + contextual exceptions
skills/code-quality/joy-check/references/writing-rubric.md Joy-grievance spectrum rubric
scripts/validate_positive_instruction_docs.py Extended with 2 missing patterns, fixed Avoid regex
scripts/tests/test_joy_check_instruction_mode.py 19 golden fixtures + 159-test fleet scan
.github/workflows/test.yml New joy-check CI job
docs/PHILOSOPHY.md Positive framing as CI gate documentation

What is NOT in this PR

  • No do_b routing scripts
  • No do-classify.py, do-enhance.py, do-build-prompt.py
  • No experimental routing variants

Test plan

  • 179 tests pass (0.36s)
  • ruff clean
  • Joy-check SKILL.md passes joy-check at 100%
  • All 178 fleet agents/skills pass instruction-mode scan

notque added 4 commits May 10, 2026 17:31
…pdate

Adds deterministic CI enforcement of positive instruction framing across
all agents and skills. Joy-check SKILL.md and rubrics accessible at
skills/voice/skills/joy-check/ (via private-skills symlink); validator,
tests, CI job, and PHILOSOPHY documentation committed to public repo.

Changes:
- scripts/validate_positive_instruction_docs.py: add NEVER and Don't
  patterns (2 missing from instruction rubric), tighten Avoid regex
  to skip technical phrases like "to Avoid N+1", add voice-andy-nemmity
  and voice-vexjoy to allowlist as contextual exceptions
- scripts/tests/test_joy_check_instruction_mode.py: new — golden fixtures
  for all 7 primary patterns, 6 contextual exceptions, 4 positive rewrites,
  parametrized fleet scan across 44 agents + 134 SKILL.md files (178 pass)
- .github/workflows/test.yml: new joy-check job runs pytest fleet scan
  on every push and PR
- docs/PHILOSOPHY.md: new "Positive Framing as CI Gate" section documenting
  the 100% zero-tolerance requirement, pattern table, and implementation refs

Symlink updated: ~/.claude/skills/joy-check → skills/voice/skills/joy-check/
Joy-check was in private-skills/ (gitignored, invisible to CI).
Moved to skills/code-quality/joy-check/ — a real git-tracked directory
alongside code-cleanup, code-linting, comment-quality.

- SKILL.md with 100% threshold (zero tolerance)
- references/instruction-rubric.md (7 primary patterns)
- references/writing-rubric.md (joy-grievance spectrum)
- Updated test docstring path reference
Fixes test_skill_mapping_covers_all_categorized_skills — joy-check
was on disk at skills/code-quality/joy-check/ but missing from
the migration mapping and routing index.
… location

Was: ~/.claude/skills/joy-check/ (symlink, flagged as old flat path)
Now: repo-relative skills/code-quality/joy-check/ (direct, deterministic)

Fixes test_no_old_flat_paths_in_md_py_files.
Full test suite: 3167 passed, 0 failed.
@notque notque merged commit 58899de into main May 10, 2026
6 checks passed
@notque notque deleted the feat/joy-check-public-migration branch May 10, 2026 19:07
notque added a commit that referenced this pull request May 11, 2026
)

Create hooks/posttooluse-joy-check-warn.py — an advisory hook that runs
joy-check framing validation on any .md file immediately after Write/Edit,
shifting the feedback loop from CI to write time.

Behaviour:
- Fires only on .md files; silent for all other file types
- Skips violations inside code fences and blockquotes (matches CI logic)
- Prints violations to stdout with line number and pattern label
- Always exits 0 (advisory — never blocks the write)
- Registered in PostToolUse Write|Edit block, timeout 5000ms

Complements the zero-allowlist CI gate from PR #634: engineers see
prohibition-led framing issues inline rather than as CI failures after push.

Test coverage: 4 scenarios validated (violation file, clean file, non-md
file, code-fence exemption) — all pass.
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.

1 participant