business-ops
Business operations: strategy, technology, growth, competitive intelligence, support, finance, HR, legal, operations, sales, productivity, product management.
Validate content framing on joy-grievance spectrum.
$ npx -y skills add notque/vexjoy-agent --skill joy-check --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/joy-checkContext preview
The summary Claude sees to decide when to auto-load this skill.
Validate content framing on joy-grievance spectrum.
name: joy-check
description: "Validate content framing on joy-grievance spectrum."
user-invocable: false
argument-hint: "[--fix] [--strict] [--mode writing|instruction] <file>"
command: /joy-check
allowed-tools:
- Read
- Write
- Edit
- Bash
- Grep
- Glob
routing:
triggers:
- joy check
- check framing
- tone check
- negative framing
- joy validation
- too negative
- reframe positively
- positive framing check
- instruction framing
pairs_with:
- voice-writer
- voice-validator
- skill-creator
complexity: Simple
category: contentValidate content framing using mode-specific rubrics. Two modes:
By default the skill evaluates each paragraph/instruction independently, produces a score (0-100), and suggests reframes without modifying content. Optional flags: `--fix` rewrites flagged items in place and re-verifies; `--strict` fails on any item below 60; `--mode writing|instruction` overrides auto-detection.
This skill checks *framing*, not *topic* and not *voice*. Voice fidelity belongs to voice-validator, AI pattern detection belongs to the private de-AI editor skill.
| Signal | Load These Files | Why | |---|---|---| | scoring instruction files (agents, skills, pipelines): positive-framing rubric | `instruction-rubric.md` | Loads detailed guidance from `instruction-rubric.md`. | | scoring human-facing prose (blog posts, emails, docs): joy-grievance rubric | `writing-rubric.md` | Loads detailed guidance from `writing-rubric.md`. |
**Goal**: Determine which rubric to apply based on file location or explicit flag.
**Auto-detection rules** (in priority order): 1. Explicit `--mode writing|instruction` flag → use that mode 2. File in `agents/*.md` → **instruction** 3. File in `skills/*/SKILL.md` → **instruction** 4. File in `skills/workflow/references/*.md` → **instruction** 5. File is `CLAUDE.md` or `README.md` → **instruction** 6. Everything else → **writing**
**Load the rubric**: Read `references/{mode}-rubric.md` for the scoring criteria, patterns, and examples relevant to this mode.
**GATE**: Mode determined, rubric loaded. Proceed to Phase 1.
**Goal**: Use regex scanning as a fast gate to catch obvious patterns before spending LLM tokens on semantic analysis.
**For writing mode**: Run the regex-based scanner for grievance patterns:
python3 ~/.claude/scripts/scan-negative-framing.py [file]
**For instruction mode**: Run a grep scan for prohibition patterns:
grep -nE 'NEVER|do NOT|must NOT|FORBIDDEN' [file] grep -nE "^-?\s*Don't|^-?\s*Avoid|^#+.*Anti-[Pp]attern|^#+.*Avoid" [file]
**Handle hits**: Report findings with suggested reframes from the loaded rubric. If `--fix` mode is active, apply reframes and re-run to confirm clean.
**GATE**: Regex/grep scan returns zero hits. Resolve obvious patterns before proceeding to Phase 2 — mechanical fixes come first.
**Goal**: Read the content and evaluate each item against the loaded rubric using LLM semantic understanding.
**Step 1: Read the content**
Read the full file. Skip frontmatter (YAML between `---` markers) and code blocks.
**Step 2: Evaluate against the rubric**
Apply the scoring dimensions from the loaded rubric (`references/{mode}-rubric.md`). Each rubric defines its own PASS/FAIL dimensions, subtle patterns to detect, and contextual exceptions.
For **writing mode**: Evaluate through the joy-grievance lens. Watch for the subtle patterns described in `references/writing-rubric.md` (defensive disclaimers, accumulative grievance, passive-aggressive factuality, reluctant generosity).
For **instruction mode**: Evaluate through the positive-negative lens. Check each instruction against the patterns table in `references/instruction-rubric.md`. Apply contextual exceptions — subordinate negatives attached to positive instructions are PASS, as are negatives in code examples, writing samples, and technical terms.
**Step 3: Score each item**
Apply the scoring scale from the loaded rubric. For any item scoring in the lower tiers (CAUTION/GRIEVANCE for writing, NEGATIVE-LEANING/PROHIBITION-HEAVY for instruction), draft a specific reframe suggestion that preserves the substance while shifting the framing.
When an item seems subtle enough to question flagging — that is precisely when flagging matters most. Subtle patterns are what the regex/grep pre-filter misses, making them the primary purpose of this LLM analysis phase.
**GATE**: All items analyzed and scored. Reframe suggestions drafted for all flagged items. Proceed to Phase 3.
**Goal**: Produce a structured report with scores, findings, and reframe suggestions.
**Step 1: Calculate overall score**
Average all item scores. Pass criteria come from the loaded rubric:
**Step 2: Output the report**
JOY CHECK: [file] Mode: [writing|instruction] Score: [0-100] Status: PASS / FAIL Items: [writing mode] P1 (L10-12): JOY [85] -- explorer framing, curiosity P3 (L18-22): CAUTI
Essays and writing behind this toolkit live at vexjoy.com. VexJoy Agent connects plain-English requests to specialist agents, skills, and workflows. /do selects the knowledge and tools needed for your task.
Repo: notque/vexjoy-agent
Business operations: strategy, technology, growth, competitive intelligence, support, finance, HR, legal, operations, sales, productivity, product management.
Design workflows — UX copy, design systems, design critique, accessibility review, design handoff, user research synthesis. Use when writing UI copy, reviewing…
Marketing: SEO audits, campaign planning, content strategy, email sequences, competitive analysis, brand review, performance reporting.