Repository navigation
Prepare the repository for a public launch - #15
Merged
Merged
Conversation
Add an MIT LICENSE (the maintainer's choice over Apache-2.0), rewrite the README as a landing page rather than a manual, pin every GitHub Action to a full commit SHA, and drop a named TODO from the validator. The README now leads with the value proposition, states what a plugin here actually is and who the plugins are for, and shows one worked example (/read-logs) before the install commands. Install keeps the two essential commands and folds team setup and variants into a details block. Contributing is now four steps an outside contributor can follow without installing anything; CONTRIBUTING.md stops calling itself non-canonical and points at AGENTS.md for conventions and at /lean-contribute as an option. Action SHAs were resolved from each action's own repository and match the current floating refs, except golangci-lint-action, which is pinned to the same v9.2.1 SHA that ai-plugins-internal uses. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016pDxLYapuG6GTBHwMfNXNP
Follow-up to the public-launch prep, from an adversarial re-read of the rewritten README against the files it describes. - The worked example claimed "Nothing is committed; the skill only reads." read-logs' first-run setup writes .vscode/settings.json or .zed/tasks.json (after asking), so "only reads" was wrong. Also surface the point that skills/read-logs/SKILL.md leads with: reading a run sends its contents to the model. A public landing page should not drop that. - "Most plugins are pure rules and skills" contradicted the Supported clients section two headings above, which states Claude Code has no plugin `rules` concept. - "Every plugin has a `-usage` skill" is false for the two externally sourced entries: marketplace.json gives flutter-forms only advanced_forms-build-forms and flutter-patrol only patrol-write-test and patrol-test-architecture. - The install section showed `flutter-bloc@leancode-ai-plugins` with no explanation of the suffix after the rewrite dropped it, leaving a reader unable to install any other plugin. - CONTRIBUTING.md is not "the longer version" of the README's Contributing section; it carries the same steps plus the guided path. gofmt -l cmd internal, go run ./cmd/validate-plugins, go test ./... and claude plugin validate . --strict all pass. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016pDxLYapuG6GTBHwMfNXNP
Port the skill-name checks from ai-plugins-internal: the frontmatter name must match the skill directory, must not repeat the plugin name (/foo:foo), and SKILL.md must carry YAML frontmatter. The go test step in CI previously had no test files to run; it now runs five, three of which fail against the old validator. stability is deliberately not ported: claude plugin validate --strict rejects it as an unknown plugin.json field. Add Dependabot for the SHA-pinned actions, grouped monthly. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The conventions assumed an AnalyticsId type that no package provides, so reviews invented widget APIs (an analyticsId parameter on ElevatedButton). Add analytics-wiring.md: the app-level AnalyticsId class, tappable widgets that register TapAnalyticsEvent through leancode_analytics_base, and page views reported by the route. The review and scaffold skills now check the project's wiring first and must not invent parameters. Bump to 0.2.0. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Replace the prose example with a same-question comparison from real runs: without the plugin Claude guesses at the failure; with /read-logs it reads the 409 from the run. Move per-plugin setup next to the plugins that need it, move the contribution steps and repo layout to CONTRIBUTING.md, and bring lean-core's contributor and usage skills and AGENTS.md in line with the current checks. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
wzslr321
force-pushed
the
task/public-release-prep
branch
from
September 23, 2026 08:53
82a463d to
821a680
Compare
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
wzslr321
approved these changes
Sep 23, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.
Gets the public repo ready for outside Flutter developers ahead of promoting it. No plugins added or removed;
.claude-plugin/marketplace.jsonchanges only in two descriptions.README
Rewritten as a landing page, shorter than
main:/read-logs, Claude reads409 cancellation_window_closedand the 24-hour rule from the run: 6 tool calls, $0.17.<details>.CONTRIBUTING.md, which now holds the steps and the repo layout.Supported clientsand the grouped plugin list stay, becauseAGENTS.mdnames both as sources of truth.marketplace.jsondescriptions. Skill content is unchanged.flutter-analytics: whereAnalyticsIdcomes from (0.2.0)The conventions assumed an
AnalyticsIdtype that no package provides, and never said how it is wired. As a result, a review invented ananalyticsId:parameter onElevatedButton. The newreferences/analytics-wiring.mdcovers:AnalyticsIdclass;TapAnalyticsEventthrough the publicleancode_analytics_base;LeanAnalyticsRoute.The review and scaffold skills now check the project's wiring first and must not invent parameters. I re-ran the same review on the same sample after the change. It read the wiring reference first, reported the missing wiring as its first finding, and flagged that
ElevatedButtonandFloatingActionButtonhave noanalyticsIdparameter.Validator: skill name checks, now with tests
Ported from
ai-plugins-internal(frontmatter.go,validateSkillName,plugin_test.go), with ownership, rules and Cursor left out:namemust match the skill directory/foo:foo)SKILL.mdmust have YAML frontmatterBefore this PR, the
go test ./...CI step passed without running anything, because the repo had no test files. It now runs 5 tests. 3 of them fail against the validator onmain, which shows they cover the new checks. All 12 local plugins pass the new checks unchanged.stabilitywas deliberately not ported. Adding it to aplugin.jsonfails our own strict spec check:plugin.json → stability: Unknown field 'stability'. Claude Code ignores it at load time.Every public plugin would read as stable anyway. A plugin promoted from internal withstabilityset will need that field dropped here.MIT licence
LICENSEat the repo root, copyright holder LeanCode, year 2026 (the maintainer's decision over Apache-2.0).Action pins
Every
uses:is pinned to a full commit SHA with a# vX.Y.Zcomment, as inai-plugins-internal. A new.github/dependabot.ymlbumps the SHA and the comment together in one grouped monthly PR, so nobody has to maintain the pins by hand.golangci-lint-actionis pinned to v9.2.1, the same SHA as internal. The other pins match what their floating tags resolve to today.Smaller changes
TODO(wiktor.zajac)ininternal/pluginvalidation/files.gois reworded without the name.lean-contributeno longer callsCONTRIBUTING.mda thin pointer at itself.AGENTS.mddocuments the new skill-name rules.Validation
gofmt -l cmd internal: no outputgo vet ./...: cleangolangci-lint run ./...:0 issues.go test ./...: 5 tests passgo run ./cmd/validate-plugins:OK: plugin structure is valid (12 plugin(s) checked).claude plugin validate . --strict(2.1.173, as in CI):Validation passedREADME.mdandCONTRIBUTING.mdresolves. External links and the badge return 200.Not in this PR
lean-a11y,qa-workflows,lean-jev): these are separate PRs.🤖 Generated with Claude Code