diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index e4b1ccb..f3c2486 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -6,21 +6,21 @@ "email": "yanchynskyy@pm.me" }, "metadata": { - "description": "Claude Code plugins for scoring, evaluating, and improving content with resonance models on u22a8.ai", + "description": "Claude Code plugins for scoring, evaluating, and improving content with scoring models on u22a8.ai", "pluginRoot": "./plugins" }, "plugins": [ { "name": "u22a8", "source": "./plugins/u22a8", - "description": "Score and compare content against information resonance models on u22a8.ai", + "description": "Score and compare content against scoring models on u22a8.ai", "version": "0.1.0", "category": "content-quality", "tags": [ "scoring", "writing", "content-quality", - "resonance-models" + "scoring-models" ] } ] diff --git a/README.md b/README.md index fb8aa41..24691c7 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ # U+22A8 plugins -Claude Code plugin marketplace for [u22a8.ai](https://u22a8.ai) — score and improve content with resonance models. +Claude Code plugin marketplace for [u22a8.ai](https://u22a8.ai) — score and improve content with scoring models. -> A resonance model is a standard of judgment, learned from examples, that can score any content — turning subjective quality into something measurable. +> A scoring model is a standard of judgment, learned from examples, that can score any content — turning subjective quality into something measurable. ## Quick start █░░ @@ -18,7 +18,7 @@ Claude Code plugin marketplace for [u22a8.ai](https://u22a8.ai) — score and im ### u22a8 -Score and improve content against resonance models on u22a8.ai. +Score and improve content against scoring models on u22a8.ai. Two skills: diff --git a/actions/score-docs/README.md b/actions/score-docs/README.md index 2f94af3..736177e 100644 --- a/actions/score-docs/README.md +++ b/actions/score-docs/README.md @@ -38,7 +38,7 @@ That's it. The action posts a score comment on every PR that changes a markdown # Model to score against. Default: u22a8.compelling-readme # Options: u22a8.compelling-readme, u22a8.technical-writing, # u22a8.developer-landing-page, u22a8.puns - profile: u22a8.technical-writing + model: u22a8.technical-writing # Flag files that score below this threshold (0-100). # Informational only — does not block merge. @@ -95,7 +95,7 @@ For tighter iteration — score a draft, improve it, rescore — the [U+22A8 Cla Most "AI quality" tools use an LLM to judge output. That means different scores on the same content on different runs. You can't set a threshold you can trust. -U+22A8 scores are deterministic — same content, same profile, same score every time. That's what makes a threshold meaningful in a CI context. +U+22A8 scores are deterministic — same content, same model, same score every time. That's what makes a threshold meaningful in a CI context. U+22A8 also outperforms LLM-as-judge on correlation with human judgment, at a fraction of the cost and latency. [Details at u22a8.ai.](https://u22a8.ai) diff --git a/actions/score-docs/action.yml b/actions/score-docs/action.yml index 1e9b975..ac639f2 100644 --- a/actions/score-docs/action.yml +++ b/actions/score-docs/action.yml @@ -1,5 +1,5 @@ name: "U+22A8 Score Docs" -description: "Score markdown files in PRs against U+22A8 resonance models. Posts per-trait quality scores as a PR comment." +description: "Score markdown files in PRs against U+22A8 scoring models. Posts per-trait quality scores as a PR comment." author: "u22a8.ai" branding: @@ -7,7 +7,7 @@ branding: color: "green" inputs: - profile: + model: description: "Model handle to score against" required: false default: "u22a8.compelling-readme" @@ -40,7 +40,7 @@ runs: shell: bash env: GH_TOKEN: ${{ inputs.github-token || github.token }} - U22A8_PROFILE: ${{ inputs.profile }} + U22A8_MODEL: ${{ inputs.model }} U22A8_THRESHOLD: ${{ inputs.threshold }} U22A8_FILES: ${{ inputs.files }} U22A8_API: "https://u22a8.ai" diff --git a/actions/score-docs/examples/u22a8-score.yml b/actions/score-docs/examples/u22a8-score.yml index 96c666b..45870b0 100644 --- a/actions/score-docs/examples/u22a8-score.yml +++ b/actions/score-docs/examples/u22a8-score.yml @@ -1,6 +1,6 @@ # .github/workflows/u22a8-score.yml # -# Score markdown files on every PR against a U+22A8 resonance model. +# Score markdown files on every PR against a U+22A8 scoring model. # Posts a comment with per-trait quality scores. # # More info: https://u22a8.ai @@ -21,5 +21,5 @@ jobs: - uses: actions/checkout@v4 - uses: u22a8/plugins/actions/score-docs@main # with: - # profile: u22a8.compelling-readme # default + # model: u22a8.compelling-readme # default # threshold: 60 # flag files below this score diff --git a/actions/score-docs/score-docs.sh b/actions/score-docs/score-docs.sh index f9846df..82e626f 100755 --- a/actions/score-docs/score-docs.sh +++ b/actions/score-docs/score-docs.sh @@ -2,12 +2,12 @@ set -euo pipefail # U+22A8 Score Docs — GitHub Action -# Scores markdown files changed in a PR against a U+22A8 resonance model. +# Scores markdown files changed in a PR against a U+22A8 scoring model. # Posts (or updates) a PR comment with per-trait scores. MARKER="" API="${U22A8_API:-https://u22a8.ai}" -PROFILE="${U22A8_PROFILE:-u22a8.compelling-readme}" +MODEL="${U22A8_MODEL:-u22a8.compelling-readme}" THRESHOLD="${U22A8_THRESHOLD:-}" REPO="${GITHUB_REPOSITORY:-}" @@ -49,7 +49,7 @@ if [[ ${#MD_FILES[@]} -eq 0 ]]; then exit 0 fi -echo "Found ${#MD_FILES[@]} markdown file(s) to score against ${PROFILE}." +echo "Found ${#MD_FILES[@]} markdown file(s) to score against ${MODEL}." # Score each file and build comment body COMMENT_BODY="${MARKER}"$'\n' @@ -64,7 +64,7 @@ for file in "${MD_FILES[@]}"; do CONTENT=$(cat "$file") # Call U+22A8 API with tracking headers - RESPONSE=$(curl -sf "${API}/p/${PROFILE}" \ + RESPONSE=$(curl -sf "${API}/m/${MODEL}" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -H "User-Agent: u22a8-score-docs/1.0 (GitHub Action)" \ @@ -84,7 +84,7 @@ for file in "${MD_FILES[@]}"; do fi # Get plain-text formatted output for the comment - PLAIN_RESPONSE=$(curl -sf "${API}/p/${PROFILE}" \ + PLAIN_RESPONSE=$(curl -sf "${API}/m/${MODEL}" \ -H "Content-Type: application/json" \ -H "Accept: text/plain" \ -H "User-Agent: u22a8-score-docs/1.0 (GitHub Action)" \ @@ -94,7 +94,7 @@ for file in "${MD_FILES[@]}"; do 2>/dev/null) || PLAIN_RESPONSE="" # Build file section - COMMENT_BODY+="\`${file}\` scored against \`${PROFILE}\` — **${COMPOSITE}/100**"$'\n\n' + COMMENT_BODY+="\`${file}\` scored against \`${MODEL}\` — **${COMPOSITE}/100**"$'\n\n' if [[ -n "$PLAIN_RESPONSE" ]]; then COMMENT_BODY+='```'$'\n' diff --git a/plugins/u22a8/.claude-plugin/plugin.json b/plugins/u22a8/.claude-plugin/plugin.json index 939a5bd..d6687b9 100644 --- a/plugins/u22a8/.claude-plugin/plugin.json +++ b/plugins/u22a8/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "u22a8", - "description": "Score and compare content against resonance models on u22a8.ai", + "description": "Score and compare content against scoring models on u22a8.ai", "version": "0.1.0", "author": { "name": "u22a8.ai" @@ -8,5 +8,5 @@ "homepage": "https://u22a8.ai", "repository": "https://github.com/u22a8/plugins", "license": "Apache-2.0", - "keywords": ["scoring", "writing", "content-quality", "resonance-models"] + "keywords": ["scoring", "writing", "content-quality", "scoring-models"] } diff --git a/plugins/u22a8/skills/evaluate/SKILL.md b/plugins/u22a8/skills/evaluate/SKILL.md index 4675b63..f62a6b5 100644 --- a/plugins/u22a8/skills/evaluate/SKILL.md +++ b/plugins/u22a8/skills/evaluate/SKILL.md @@ -1,6 +1,6 @@ --- name: evaluate -description: Score content against resonance model traits. Use when the user wants to measure how content performs on specific traits. +description: Score content against scoring model traits. Use when the user wants to measure how content performs on specific traits. user-invocable: true allowed-tools: Read, Glob, Bash(u22a8 MCP tools) argument-hint: [file-or-text] @@ -8,7 +8,7 @@ argument-hint: [file-or-text] # Evaluate Content -A resonance model is a standard of judgment, learned from examples, that can score any content. Each model has traits — distinct dimensions of quality — and scores content 0–100 per trait. Scores are deterministic and instant. +A scoring model is a standard of judgment, learned from examples, that can score any content. Each model has traits — distinct dimensions of quality — and scores content 0–100 per trait. Scores are deterministic and instant. Score content against specific traits. Measurement only — no edits. @@ -16,7 +16,7 @@ Score content against specific traits. Measurement only — no edits. 1. **Identify content to score.** Read from a file path ($ARGUMENTS), a URL, a selection, or conversation context. URLs (http/https) can be passed directly to `score` — they are fetched and text-extracted automatically. If unclear, ask the user what content to evaluate. -2. **Determine the model.** If the user specifies a model, use it. Otherwise, call `list_profiles` to see what's available and either pick the most relevant one based on context (e.g. a README → `u22a8.compelling-readme`) or present the options and let the user choose. +2. **Determine the model.** If the user specifies a model, use it. Otherwise, call `list_models` to see what's available and either pick the most relevant one based on context (e.g. a README → `u22a8.compelling-readme`) or present the options and let the user choose. 3. **Identify traits.** Use `list_traits` to show the model's traits. Suggest relevant ones based on context, but confirm the user's choice. Do NOT silently evaluate all traits unless the user explicitly asks for "all". diff --git a/plugins/u22a8/skills/improve/SKILL.md b/plugins/u22a8/skills/improve/SKILL.md index 90e29a1..8b24aeb 100644 --- a/plugins/u22a8/skills/improve/SKILL.md +++ b/plugins/u22a8/skills/improve/SKILL.md @@ -1,6 +1,6 @@ --- name: improve -description: Evaluate content, identify weaknesses, make targeted edits, and re-evaluate to confirm improvement. Use when the user wants to improve content against resonance model traits. +description: Evaluate content, identify weaknesses, make targeted edits, and re-evaluate to confirm improvement. Use when the user wants to improve content against scoring model traits. user-invocable: true allowed-tools: Read, Write, Edit, Glob, Bash(u22a8 MCP tools) argument-hint: [file-or-text] @@ -8,13 +8,13 @@ argument-hint: [file-or-text] # Improve Content -A resonance model is a standard of judgment, learned from examples, that can score any content. Each model has traits — distinct dimensions of quality — and scores content 0–100 per trait. Scores are deterministic and instant. +A scoring model is a standard of judgment, learned from examples, that can score any content. Each model has traits — distinct dimensions of quality — and scores content 0–100 per trait. Scores are deterministic and instant. Evaluate content, analyze weaknesses, make targeted edits, and re-evaluate to confirm improvement. ## Core Flow -1. **Identify content and model.** Read content from file ($ARGUMENTS), URL, or conversation. URLs passed to `score` are fetched automatically. If the user specifies a model, use it. Otherwise, call `list_profiles` and pick the most relevant one based on context, or let the user choose. Then confirm which traits to optimize for using `list_traits`. +1. **Identify content and model.** Read content from file ($ARGUMENTS), URL, or conversation. URLs passed to `score` are fetched automatically. If the user specifies a model, use it. Otherwise, call `list_models` and pick the most relevant one based on context, or let the user choose. Then confirm which traits to optimize for using `list_traits`. 2. **Baseline evaluation.** Call `score` with the current content. Record per-trait scores, zones, and headroom. Present the baseline — highlight which traits have the most headroom (furthest from "solid" threshold). @@ -71,7 +71,7 @@ Evaluate content, analyze weaknesses, make targeted edits, and re-evaluate to co User: "Improve my blog post for flow and storytelling" -1. No model specified and content is a blog post — call `list_profiles`, pick the most fitting model or ask the user +1. No model specified and content is a blog post — call `list_models`, pick the most fitting model or ask the user 2. Baseline: Flow=45 (Developing, headroom 12), Storytelling=62 (Solid), Composite=53 3. Analyze: "Flow has the most headroom. The third paragraph jumps abruptly from personal anecdote to technical explanation without transition." 4. Edit: Add transitional sentences, restructure the opening to establish the narrative thread