* Clean up dead files, internal design docs, and polish pre-publish documentation
* fix(.agent.md): use correct bin/cli.dart entry point
---------
Co-authored-by: Reid Baker <reidbaker@google.com>
* Migrate generator test off deprecated resolvedRules onto resolvedRuleConfigs
* Remove duplicate validate_skills CLI workflow job
* Ensure lint_skills_test is path-resilient and asserts non-empty directoryConfigs
* Fix omit_local_variable_types lints in lint_skills_test.dart
* Simplify lint_skills_test to direct ConfigParser.loadConfig() call
* Update onboarding docs and skills to include directoryConfigs.isNotEmpty assertion when loading config
* Address PR discussion r3617291798: handle working directory when run from repo root
* Make working directory path resolution cross-platform for Windows, macOS, and Linux
* Format lint_skills_test.dart with dart format
---------
Co-authored-by: Reid-Agent <269567208+reidbaker-agent@users.noreply.github.com>
* Add evaluations setup and first eval definition for definition-of-done skill
* Fix skills linter tests by adding ignore for definition-of-done-workspace and restructuring yaml configuration
* feat: standardize rule severities and options API naming and structures
- Rename Validator parameter ruleOverrides to customRuleSeverities.
- Rename severity mapping fields and parameters to ruleSeverities.
- Rename option mapping fields and parameters to ruleOptions.
- Added validation checks for options keys and types in YAML parsing.
- Decoupled and exported ValidationResult model.
* feat: introduce ConfigurableSkillRule and CustomRuleOptions type-safe wrapper
- Extract options validation to ConfigurableSkillRule base constructor.
- Introduce CustomRuleOptions class wrapping options configuration maps.
- Refactor PathDoesNotExistRule to extend ConfigurableSkillRule.
* refactor: unify options validation and migrate parser to CustomRuleOptions
- Centralize options schema validation and formatting in CheckType.validateOptions.
- Remove redundant allowedOptions getter from ConfigurableSkillRule and its subclasses.
- Update ConfigParser, entrypoint, Validator, and ValidationSession to use CustomRuleOptions instead of raw maps.
- Add unit tests for resolving options and testing PathDoesNotExistRule with custom exclusions.
* Update .gitignore
* Update ignore.json
* feat: configure path-does-not-exist exclude pattern in dart_skills_lint.yaml
* refactor: introduce type-safe getters in CustomRuleOptions and rename to optionsSchema
- Add type-safe getters (getString, getInt, getBool, getStringList) to CustomRuleOptions.
- Update PathDoesNotExistRule to retrieve options using the new type-safe getters.
- Rename allowedOptions to optionsSchema inside CheckType to distinguish the schema definition from configuration values.
- Clean up all references across EntryPoint, Registry, and tests to match optionsSchema.
* Refactor: Unify options and severity configs under RuleConfig model
* Refactor dart_skills_lint configuration options architecture
- Define RuleOptionType enum and refactor schema parsing
- Migrate PathDoesNotExistRule to use RegExp parameters directly
- Enforce immutability on CustomRuleOptions
- Restrict internal API exports
- Update test suite to reflect configuration constraints and lint formatting
* Refactor rule options to rule parameters
* fix: address code review feedback on rule configuration refactor
* fix: restore backward compatibility for ValidationSession
* test: verify deprecated API passes successfully
* Implement full backward compatibility for ruleConfigs, remove ValidationResult export, and add TODOs for deprecation tracking (fixes downstream consumers)
* Update dart-skills-lint-integration skill to use resolvedRuleConfigs instead of deprecated resolvedRules
* fix: address PR #176 code review comments and deprecations audit
---------
Co-authored-by: Reid Baker <reidbaker@google.com>
Co-authored-by: Reid Baker <1063596+reidbaker@users.noreply.github.com>
* Add v0.4.0-dev.1 preview: native binary distribution
- New tag-triggered release workflow builds dart_skills_lint as a
standalone native binary for macOS arm64/x64 and Linux x64/arm64
via `dart compile exe`, packages each as a tarball with SHA256,
and cuts a GitHub Release with release notes extracted from
CHANGELOG.md.
- New install.sh detects OS/arch, downloads the matching tarball,
verifies SHA256, and installs to INSTALL_DIR (default /usr/local/bin
with sudo fallback). REPO/VERSION/INSTALL_DIR are env-configurable
so the script survives the impending dart_skills_lint repo move
with a single default-value edit.
- Pub.dev install paths (`dart pub global activate` and dev_dependency)
are unchanged; binaries are a parallel channel.
- macOS binaries in this preview are unsigned. Homebrew formula is
deferred until the new home repo is settled to avoid forcing
early adopters through a re-tap on migration.
* Bump GitHub Actions to Node 24-compatible versions
- actions/upload-artifact: v4 → v7 (was the Node 20 deprecation
warning source from the first fork test)
- actions/download-artifact: v4 → v8
- softprops/action-gh-release: v2 → v3
All three were on Node 20, which GitHub forces to Node 24 on
2026-06-16. Each matrix job uploads with a unique artifact
name, so v5+'s duplicate-name restriction is non-issue.
download-artifact v8's new error-on-hash-mismatch default is
a security upgrade.
* Update README install section for v0.4.0-dev.1 binary preview
Lead with install.sh as the recommended path; add a direct-curl
variant for environments that don't pipe scripts to bash. Keep
the pub.dev paths (dev_dependency and `dart pub global activate`)
unchanged under a "Dart developers" section.
Documents the macOS Gatekeeper workaround for unsigned preview
binaries, a brief note that Homebrew is coming after the imminent
repo migration, and the pinning syntax to opt into the preview
track. Bumps the stable caret range example from ^0.2.0 to ^0.3.0.
* Address Gemini review on install.sh
- install.sh:118 (high): print the macOS Gatekeeper note BEFORE the
--help launch check so users see the xattr workaround even when
Gatekeeper blocks the binary. On macOS, downgrade the --help
failure from a hard err to an informational message since the
install itself succeeded; the launch will work once quarantine
is cleared. Non-macOS still hard-errs on launch failure.
- install.sh:80 (medium): strip leading '*' from SHA256SUMS field 2
before comparison so binary-mode hash files (sha256sum -b output)
work as well as text-mode.
* Address self-review on PR #158
- install.sh: collapse three hand-rolled "Supported: ..." messages
behind one SUPPORTED_TARGETS constant, so the error text and the
final platform check share a source of truth. Error text now lists
normalized targets (macos-arm64, macos-x64, linux-x64, linux-arm64)
instead of raw uname variants.
- CHANGELOG.md: shrink the 0.4.0-dev.1 entry to match the 0.3.1
style — flat user-facing bullets, no internal workflow detail or
Homebrew roadmap.
- README.md: reorder the Installation section so the pub.dev path
(existing Dart audience) comes first, followed by install.sh and
the direct-download path for the no-Dart preview audience.
* Refactor install.sh tests to be robust, add Linux tests and missing error coverage
* Fix custom linter warnings and format test file
* Fix omit_obvious_local_variable_types analyzer warning in test
* Pin softprops/action-gh-release to commit SHA to resolve review feedback
* Pin VeryGoodOpenSource/very_good_coverage to commit SHA
* Add tag mapping comments to pinned action commit SHAs
* Add copyright header enforcement test and fix missing headers
Adds test/copyright_header_test.dart which scans every .dart file
in bin/, lib/, and test/ and fails if any is missing the BSD
copyright block. Bacfills the 15 files that were missing it, closing #160.
* Address review: Windows line endings, named constants, formatter parity
- Normalize \r\n -> \n in _hasCopyrightHeader so the test passes on
Windows checkouts with core.autocrlf enabled.
- Extract the canonical copyright text into a _copyrightHeader constant
and use it in the error message (with 2026 instead of <year> so the
block is copy-pasteable).
- Convert source directories to a const Set<String> with a doc comment
naming the path base.
- Revert bin/cli.dart's shebang/copyright spacing to match main; the
blank line came from a dev-channel formatter and is rejected by CI's
stable formatter (and by pana).
---------
Co-authored-by: Reid Baker <reidbaker@google.com>