Skip to content

fix(project): never block on git state; validate through git's lens - #143

Merged
josegironn merged 1 commit into
mainfrom
josegironn/skill-validate-ux
Jul 27, 2026
Merged

fix(project): never block on git state; validate through git's lens#143
josegironn merged 1 commit into
mainfrom
josegironn/skill-validate-ux

Conversation

@josegironn

@josegironn josegironn commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

Summary

Fixes the authoring-loop friction reported on major project validate: gitignored .DS_Store files produced dotfile errors, and an uncommitted skill dir hard-failed with "has never been committed to git".

  • Git-lens enumeration: skill files come from git ls-files -co --exclude-standard (tracked + untracked-unignored), with a filesystem-walk fallback outside a repo. Gitignored files are invisible to validation and excluded from bundle zips — matching what the tree hash and the compile job's clean clone actually contain. A non-ignored .DS_Store still errors (the server rejects it at publish).
  • Issue severity: warnings render as ⚠, never affect exit codes or JSON valid.
  • No git-state blocking anywhere: validate does not touch git state at all. compile downgrades everything: unresolvable tree hash (no repo / never committed) → warning + that skill omitted from output; dirty skill dir → warning that the hash reflects HEAD. Safe because local compile is advisory — the authoritative compile job runs on clean clones where none of these states exist.

Repro verified

Uncommitted skill dir with gitignored .DS_Store at two levels: validate✓ Project is valid, exit 0; compile → one ⚠ skip warning, exit 0; after commit → compiles with tree hash; dirty edit → ⚠ HEAD-hash warning, exit 0; bundle zip contains only git-visible files.

🤖 Generated with Claude Code

https://claude.ai/code/session_01KgHMhia4ZHmppQ2EYoX1TT

Made with Orca 🐋

Skill files are enumerated via git ls-files -co --exclude-standard (filesystem
walk only outside a repo), so gitignored junk like .DS_Store is invisible to
validation and excluded from bundle zips — matching what the tree hash and the
platform's clean clone actually contain.

Issues gain a severity; warnings render as ⚠ and never affect exit codes or
JSON validity. validate no longer touches git state at all. compile downgrades
every commit-state condition to a warning: an unresolvable tree hash (no repo /
never committed) skips that skill from the output with guidance, and a dirty
skill dir warns that the hash reflects HEAD.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KgHMhia4ZHmppQ2EYoX1TT

Co-authored-by: Orca <help@stably.ai>
@josegironn
josegironn merged commit ad1b020 into main Jul 27, 2026
1 check passed
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.

1 participant