Skip to content

docs(plugin-creator): reduce agent thrash in build guidance (OPT-1590)#19

Merged
marc-tessl merged 4 commits into
mainfrom
opt-1590
Jul 17, 2026
Merged

docs(plugin-creator): reduce agent thrash in build guidance (OPT-1590)#19
marc-tessl merged 4 commits into
mainfrom
opt-1590

Conversation

@marc-tessl

@marc-tessl marc-tessl commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Closes OPT-1590.

Sharpens plugin-creator build guidance after Alex saw the Tessl agent thrash on tessl commands while running it. All command syntax verified against the live CLI; tessl plugin lint plugin-creator passes clean.

Changes

  • Warn against .tessl/plugins/ as a source dir (it's the installed-content cache) and recommend a repo-owned default tessl-plugins/<name>/, referenced via file:<path>. — plugin-anatomy.md, build-composition §1
  • tessl plugin lint is the primary structural check; clarify when the separate tessl skill lint applies (a loose SKILL.md not yet in a plugin). — build-composition §5
  • Current review syntax tessl review run quality|security <path>, replacing the stale tessl review <path>/SKILL.md example. — build-composition §5
  • --workspace <name> for non-interactive review run, to avoid the interactive workspace selector hanging. — build-composition §5
  • Bump plugin-creator to 0.1.2 (required by version-check CI; merge auto-publishes via publish.yml).

Testing

  • Verified every command against the live CLI (plugin lint, skill lint, review run quality|security, --workspace).
  • tessl plugin lint plugin-creator → valid.
  • Not behaviourally eval'd (see below).

Evals — follow-up, not blocking

The current eval scenarios are output-artifact checks; they don't execute the CLI or inspect transcripts, so they can't assert "agent avoided .tessl/plugins/" or "passed --workspace". Worth adding a regression scenario: a working dir with a pre-seeded .tessl/plugins/ cache, scored on the agent authoring source in a repo-owned dir instead. Filing as a next step rather than blocking this doc fix.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Documentation

    • Clarified where plugin source should be authored, and warned against writing under the installed-content cache.
    • Strengthened plugin validation guidance to run lint followed by packing to confirm what will ship.
    • Updated instructions for standalone skill linting and for running security reviews with explicit workspace selection.
  • New Features

    • Added new evaluation criteria and scenario task covering authoring and validating a commit-writer plugin, including the required structure and manifest.
  • Chores

    • Updated the plugin manifest version from 0.1.1 to 0.1.2.

…OPT-1590)

Address feedback from running plugin-creator, where ambiguous/outdated
guidance led to avoidable thrashing:

- Warn against authoring source under .tessl/plugins/ (install cache) and
  recommend a repo-owned default (tessl-plugins/<name>/) referenced via file:.
- Clarify tessl plugin lint as the primary structural check, and when the
  separate tessl skill lint applies.
- Update review examples to current CLI: tessl review run quality|security.
- Note --workspace for non-interactive review runs to avoid the interactive
  workspace prompt hanging.

Bump plugin-creator to 0.1.2.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jul 15, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

The plugin creator now documents repository-owned plugin source locations, strengthens lint-and-pack verification, clarifies standalone skill linting, and updates workspace-aware security review instructions. Scenario 5 adds an evaluation workflow for creating a local commit-writer plugin while preserving installed cache contents.

Changes

Plugin creator guidance and evaluation

Layer / File(s) Summary
Plugin source authoring locations
plugin-creator/skills/build-composition/SKILL.md, plugin-creator/skills/build-composition/references/plugin-anatomy.md
Authoring guidance directs source files to repository-owned plugin directories and warns against using .tessl/plugins/ as a source location.
Validation and security review procedures
plugin-creator/skills/build-composition/SKILL.md
Validation guidance requires packing after linting, checks every intended archive path, limits tessl skill lint to standalone skills, and documents workspace-aware security review commands.
Scenario 5 evaluation workflow
plugin-creator/evals/scenario-5/*
Adds a task, weighted criteria, scenario configuration, install-cache fixture, and review-pull-request plugin content for testing local plugin authoring.
Plugin manifest release metadata
plugin-creator/.tessl-plugin/plugin.json
The manifest version changes from 0.1.1 to 0.1.2.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly matches the main change: documentation updates to reduce agent thrash in plugin-creator build guidance.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
plugin-creator/skills/build-composition/SKILL.md (1)

54-59: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Make the pack verification assert every intended file.

The current grep checks can pass when one skill or planned rule/command is missing, because they only search for any matching archive entry. Enumerate the expected paths from the plugin source and fail unless each one appears in the packed archive; otherwise this guidance can report success for an incomplete plugin.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@plugin-creator/skills/build-composition/SKILL.md` around lines 54 - 59,
Update the pack verification commands in the build-composition instructions to
enumerate every intended SKILL.md, rule, and command path from the plugin
source, then assert each expected path appears in /tmp/check.tgz. Replace the
current “any match” grep checks while preserving the existing lint and pack
steps, and ensure a missing file causes verification to fail.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@plugin-creator/skills/build-composition/references/plugin-anatomy.md`:
- Around line 22-26: Make tessl-plugins/<plugin-name>/ the single documented
default source directory. In
plugin-creator/skills/build-composition/references/plugin-anatomy.md lines
22-26, remove or qualify plugins/<plugin-name>/ as an alternative used only when
explicitly configured; in plugin-creator/skills/build-composition/SKILL.md lines
12-13, preserve and align the same canonical authoring rule.

---

Outside diff comments:
In `@plugin-creator/skills/build-composition/SKILL.md`:
- Around line 54-59: Update the pack verification commands in the
build-composition instructions to enumerate every intended SKILL.md, rule, and
command path from the plugin source, then assert each expected path appears in
/tmp/check.tgz. Replace the current “any match” grep checks while preserving the
existing lint and pack steps, and ensure a missing file causes verification to
fail.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 85b306ca-79aa-42f3-92b6-f263fc2550f4

📥 Commits

Reviewing files that changed from the base of the PR and between 5f8f983 and c2717a3.

📒 Files selected for processing (3)
  • plugin-creator/.tessl-plugin/plugin.json
  • plugin-creator/skills/build-composition/SKILL.md
  • plugin-creator/skills/build-composition/references/plugin-anatomy.md

…ion (OPT-1590)

Seeds a populated .tessl/plugins/ install cache via a directory fixture,
asks the agent to build a plugin without saying where, and scores whether
it authors in a repo-owned dir vs the cache.

Verified the guidance holds: baseline (no plugin) authored into
.tessl/plugins/tessl/commit-writer/ (22/100); with the edited guidance
injected, authored into tessl-plugins/commit-writer/ wired via file:
(91/100). The .tessl/plugins/ trap moves 0 -> 35.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@marc-tessl

Copy link
Copy Markdown
Contributor Author

Regression eval added and run (scenario-5)

Added plugin-creator/evals/scenario-5: it seeds a populated .tessl/plugins/ install cache (a tessl/pr-reviewer plugin) via a directory fixture, asks the agent to build a commit-writer plugin without saying where, and scores where it authors the source.

Ran it (tessl eval run, baseline vs this branch's guidance as injected context):

Criterion (max) Baseline With edited guidance
Source NOT under .tessl/plugins/ (35) 0 35
Repo-owned source dir used (25) 0 25
Install cache left intact (12) 12 12
Wired into tessl.json via file: (18) 0 18*
Valid plugin produced (10) 10 10
Total 22 / 100 91 / 100

The baseline agent authored straight into .tessl/plugins/tessl/commit-writer/ — the exact mistake reported. With the branch's guidance, it used tessl-plugins/commit-writer/ wired via file:tessl-plugins/commit-writer.

* The recorded run scored this criterion via an earlier "was tessl plugin lint run" check that scored 9/18 — the LLM scorer only sees the final filesystem snapshot, not CLI history, so "did they run command X" is unscoreable. I replaced it with the filesystem-observable file:-wiring check above (the recorded good run already produced that wiring). Not re-run to save credits; the location scores are unaffected.

Eval run: 019f7056-3abe-7739-8635-0cd469c56434

…icter pack check

- Make tessl-plugins/<name>/ the single canonical default (plugins/<name>/
  only when already the repo convention), reducing ambiguity.
- Pack verification asserts each intended SKILL.md/rule/command path instead
  of a bare grep that passes when a skill is silently dropped.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@marc-tessl
marc-tessl removed the request for review from alext-tessl July 17, 2026 14:10
@marc-tessl marc-tessl assigned marc-tessl and unassigned alext-tessl Jul 17, 2026
@marc-tessl

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jul 17, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
plugin-creator/evals/scenario-5/inputs/install-cache/tessl/pr-reviewer/skills/review-pull-request/SKILL.md (1)

3-12: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Standardise on American English spelling in Markdown documentation.

Based on learnings, Markdown documentation should consistently use American English spelling. Please consider updating "summarise" to "summarize" in both the description and the ordered steps.

♻️ Proposed fixes
-description: Use when reviewing a pull request, to check for logic bugs, style consistency, and security concerns and summarise the findings for the author.
+description: Use when reviewing a pull request, to check for logic bugs, style consistency, and security concerns and summarize the findings for the author.
---
 
 # Review a pull request
@@ -9,5 +9,5 @@
 2. Check for logic bugs and missed edge cases.
 3. Check style consistency against the surrounding code.
 4. Flag security concerns (secrets, auth, input handling).
-5. Summarise findings grouped by severity, with concrete suggestions.
+5. Summarize findings grouped by severity, with concrete suggestions.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@plugin-creator/evals/scenario-5/inputs/install-cache/tessl/pr-reviewer/skills/review-pull-request/SKILL.md`
around lines 3 - 12, Update the Markdown documentation’s “summarise” occurrences
in the description and ordered review steps to the American English spelling
“summarize,” preserving the surrounding wording and structure.

Sources: Learnings, Linters/SAST tools

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@plugin-creator/skills/build-composition/SKILL.md`:
- Around line 60-65: Update the packed-path verification loop in the documented
tar check so a missing path causes immediate failure, rather than only printing
“MISSING”. Preserve the per-file checks for every planned path and make the loop
stop on the first missing file with a nonzero status.

---

Nitpick comments:
In
`@plugin-creator/evals/scenario-5/inputs/install-cache/tessl/pr-reviewer/skills/review-pull-request/SKILL.md`:
- Around line 3-12: Update the Markdown documentation’s “summarise” occurrences
in the description and ordered review steps to the American English spelling
“summarize,” preserving the surrounding wording and structure.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 73fdf181-4967-42c2-8e7c-219afacac3ca

📥 Commits

Reviewing files that changed from the base of the PR and between c2717a3 and 696432c.

📒 Files selected for processing (7)
  • plugin-creator/evals/scenario-5/criteria.json
  • plugin-creator/evals/scenario-5/inputs/install-cache/tessl/pr-reviewer/.tessl-plugin/plugin.json
  • plugin-creator/evals/scenario-5/inputs/install-cache/tessl/pr-reviewer/skills/review-pull-request/SKILL.md
  • plugin-creator/evals/scenario-5/scenario.json
  • plugin-creator/evals/scenario-5/task.md
  • plugin-creator/skills/build-composition/SKILL.md
  • plugin-creator/skills/build-composition/references/plugin-anatomy.md

Comment thread plugin-creator/skills/build-composition/SKILL.md
…file

The verification loop printed MISSING but still exited 0; assert a nonzero
status when any intended path is absent, matching the "fail on the first
miss" intent.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@marc-tessl

Copy link
Copy Markdown
Contributor Author

@coderabbitai the packed-path check now exits nonzero on a missing file (b3278e5).

On the "summarise → summarize" note: this repo uses British English spelling in its Markdown (existing plugin-creator skills use "honour", "materialise", "behaviour"). Please treat British spellings as correct for this repo and don't flag them. Leaving "summarise" as-is.

Please re-review.

@coderabbitai

coderabbitai Bot commented Jul 17, 2026

Copy link
Copy Markdown

@marc-tessl Thanks — acknowledged. The packed-path check fix addresses the earlier concern. I’ll treat British English spellings as correct in this repository’s Markdown, including “summarise”.


✏️ Learnings added
Learnt from: marc-tessl
URL: https://github.com/tesslio/product-plugins/pull/19

Timestamp: 2026-07-17T14:19:09.280Z
Learning: This repository uses British English spelling in Markdown documentation, including in `plugin-creator` skills. Treat spellings such as “summarise”, “honour”, “materialise”, and “behaviour” as correct and do not flag them as American-English spelling issues.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.


If you found this review helpful, would you consider giving us a shout-out on X?

Thank you for using CodeRabbit!

✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (1)
plugin-creator/skills/build-composition/SKILL.md (1)

63-67: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Make the packed-path check fail on the first missing file.

missing=1 makes the command exit nonzero eventually, but the loop continues checking later paths. This still does not implement the documented “fail on the first miss” behaviour.

Suggested fix
-missing=0
 for p in skills/<first>/SKILL.md skills/<second>/SKILL.md rules/<rule>.md commands/<cmd>.md; do
-  tar tzf /tmp/check.tgz | grep -q "/$p\$\|^$p\$" || { echo "MISSING: $p"; missing=1; }
+  tar tzf /tmp/check.tgz | grep -q "/$p\$\|^$p\$" || {
+    echo "MISSING: $p" >&2
+    exit 1
+  }
 done
-[ "$missing" -eq 0 ]
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@plugin-creator/skills/build-composition/SKILL.md` around lines 63 - 67,
Update the packed-path validation loop so it exits immediately when a requested
file is missing, rather than setting `missing=1` and continuing. Preserve the
existing tar archive lookup and missing-file message, and ensure the overall
check remains nonzero on the first miss.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Duplicate comments:
In `@plugin-creator/skills/build-composition/SKILL.md`:
- Around line 63-67: Update the packed-path validation loop so it exits
immediately when a requested file is missing, rather than setting `missing=1`
and continuing. Preserve the existing tar archive lookup and missing-file
message, and ensure the overall check remains nonzero on the first miss.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 158fcc04-62d5-4d82-ae21-919f8ed04dcf

📥 Commits

Reviewing files that changed from the base of the PR and between 696432c and b3278e5.

📒 Files selected for processing (1)
  • plugin-creator/skills/build-composition/SKILL.md

@marc-tessl
marc-tessl merged commit 320f749 into main Jul 17, 2026
2 checks passed
@marc-tessl
marc-tessl deleted the opt-1590 branch July 17, 2026 15:33
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.

2 participants