Skip to content

Carry FailproofAI/skills as a submodule at skills/ - #559

Merged
NiveditJain merged 1 commit into
mainfrom
add-skills-submodule
Jul 17, 2026
Merged

Carry FailproofAI/skills as a submodule at skills/#559
NiveditJain merged 1 commit into
mainfrom
add-skills-submodule

Conversation

@NiveditJain

Copy link
Copy Markdown
Member

Adds the org's agent-skills collection (FailproofAI/skills) to this repo as a submodule, pinned at a commit that a job keeps fresh automatically.

Shape

Mirrors how platform and agenteye carry this repo at failproofai/oss — dedicated path, branch = main, HTTPS url:

[submodule "skills"]
	path = skills
	url = https://github.com/failproofai/skills.git
	branch = main

Pinned at FailproofAI/skills@37d6892 (that repo's current main).

How the pin stays fresh

This is the same push-from-source direction as bump-platform-submodule.yml, just with this repo on the receiving end for once:

Upstream Downstream Job lives in
Today failproofai platform, agenteye failproofai
This PR skills failproofai skills

The companion job is FailproofAI/skills#3. When skills' main moves, it mints a version-bot token, rewrites the gitlink here, and pushes straight to main — version-bot is a bypass actor on the org-level failproofai-rules ruleset, so it isn't stopped by the PR requirement.

Notes for the reviewer

  • Merge order: this PR should land first. The bump job hard-errors (is not a gitlink — aborting) until skills/ exists here, which is deliberate — it fails loudly rather than inventing the entry.
  • The job needs a one-time admin step before it worksVERSION_BOT_APP_ID and VERSION_BOT_PRIVATE_KEY on the skills repo, which has no secrets today. Details in the companion PR.
  • CI is unaffected: every actions/checkout here leaves submodules at the default, so skills/ stays an empty dir in CI. The collection is .md/.py/.yaml only, so lint, tsc, and build have nothing to pick up either way.
  • skills/ sits beside the existing skills-lock.json, which is unrelated — that's the npx skills add lockfile for .agents/skills/mintlify.

🤖 Generated with Claude Code

https://claude.ai/code/session_01U6pt7MCEDAasEYkrLUGork

Pin the org's agent-skills collection into this repo as a gitlink, following
the same shape platform and agenteye use to carry this repo at failproofai/oss.

The pin is kept fresh automatically: a push-triggered job in FailproofAI/skills
rewrites this gitlink whenever that repo's main moves, so the pinned commit
tracks upstream without anyone bumping it by hand.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01U6pt7MCEDAasEYkrLUGork
@coderabbitai

coderabbitai Bot commented Jul 17, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@NiveditJain, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 38 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: fcac73e9-b336-4eb2-9481-73d463736205

📥 Commits

Reviewing files that changed from the base of the PR and between 93091dc and 58c8f71.

📒 Files selected for processing (2)
  • .gitmodules
  • skills

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.

@hermes-exosphere hermes-exosphere left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Hermes Agent Review — APPROVED ✓

PR adds FailproofAI/skills as a submodule at skills/. Simple and clean.

What's here

  • New .gitmodules entry: path = skills, url = https://github.com/failproofai/skills.git, branch = main
  • Gitlink pinned at 37d6892 (skills' current main)

What's good

  • ✅ Submodule config is standard — HTTPS URL, branch = main, dedicated path
  • ✅ CI is unaffected: actions/checkout leaves submodules at default (recursive=false), so skills/ stays empty in CI — no build/lint/tsc impact
  • skills/ sits beside the unrelated skills-lock.json (Mintlify lockfile), clearly distinct
  • ✅ PR body is thorough: merge order, companion job, one-time admin step, CI implications all documented
  • ✅ All CI checks pass (build, test, test-e2e, quality, docs)

No concerns

This is a mechanical submodule addition with no code changes. The companion job in FailproofAI/skills#3 handles keeping the pin fresh, and the PR body correctly notes that this should land first.

Merge away. 🚀

@NiveditJain
NiveditJain merged commit f50ba11 into main Jul 17, 2026
12 checks passed
SiddarthAA added a commit that referenced this pull request Aug 7, 2026
The v1 desired-state payload named its fields `generation` and `revision`.
After the rename it carried neither, at the same version number — same
endpoint, same version, different shape, which is the one thing a schema
version exists to prevent. AgentEye#559 now emits 2; this accepts both.

1 is accepted ONLY for files already on disk. A machine that ran an earlier
beta has a `desired-state.json` and an `active.json` written at version 1,
and both structs carry `deny_unknown_fields` — so refusing that version would
leave the daemon unable to read its own persisted state, silently not
enforcing cloud policy until a poll re-materialised everything.

That same asymmetry decides where the field aliases live. They stay on the
persisted `ActiveDeployment`/`ActivePolicy`, whose bytes may have been written
by an older daemon than the one now reading them. They are REMOVED from the
wire `DesiredState`/`DesiredPolicy`, because no server can emit the old
spelling — an alias there is dead code, and a silently-tolerated stale field
is exactly how two sides drift back apart. A test pins each half, including
that the wire now REFUSES the old spelling rather than quietly taking it.

The TypeScript hook reader had the same constant and accepted only 1. That is
the worst-shaped version of this bug: the daemon reconciles, writes a correct
`active.json`, reports "deployment 1 active" — and the hook path alone refuses
it, so cloud policy stops being enforced while every other signal says the
machine is healthy. Reproduced exactly that way while syncing against a live
#559 server, before this fix.

Verified end to end against the real stack: publish a policy, deploy it, the
daemon pulls schemaVersion 2, verifies every digest, activates, and a matching
tool call is denied with that policy's reason.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CCSFM55BcUEAHECabpeSr4
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