feat(skills): sync vendored skills with skills main 8287f83a - #25
arcjet-rei wants to merge 2 commits into
Conversation
Adds integrate-arcjet-guard-agent-framework-go, for Go agents built on Microsoft Agent Framework, and brings the Go references up to the released SDK. arcjet-go v1.0.0 and agentframework v0.1.0 were tagged on 2026-09-17, so `go get ...@latest` resolves v1.0.0 and the previous instruction to pin v1.0.0-rc.2 would send readers to an older version than the default. The agent framework helpers are a separate module needing Go 1.26 while the root module stays on Go 1.25. WithCorrelationId became WithCorrelationID, with CorrelationId and DecisionId following. That rename shipped in v1.0.0, where WithCorrelationId was the only exported symbol removed since rc.2, so the previous copy named a function that no longer exists. The tip also carries skills#63 and skills#64. Files were copied at that SHA and then formatted with dprint, which is why most of the upstream delta does not appear here: the vendored tree stores formatted copies. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
VerificationAt
Every canonical directory was compared against
No Why the diff is smaller than the syncCopying the tree changed 15 paths. Running This is worth knowing before the next sync: counting files in the diff understates what was copied, and a sync that looks suspiciously small is probably correct. One correction made during the workAn early drift report ran while the checkout was one commit behind |
There was a problem hiding this comment.
Arcjet Review — 🟡 Medium Risk
Decision: Checked
Rationale: This PR updates vendored Markdown skill documentation and the changelog, including Go Arcjet SDK release references, correlation ID spelling, and a new Microsoft Agent Framework for Go integration skill. The auth/security escalation trigger fired because the changed guidance discusses guard policies and token-bucket rate limiting, but there are no executable code changes, no dependency changes, and no hardcoded real credentials or secrets observed. I am approving despite Medium risk because the change is documentation-only, security guidance generally favors fail-closed behavior, and the PR metadata accurately describes the diff.
Summary of Changes
Synchronizes Arcjet vendored skill docs with an upstream skills snapshot, adds a new Go Microsoft Agent Framework Guard integration skill, updates Go SDK installation/version guidance from pre-release to released modules, and renames Go correlation/decision ID references to the v1.0.0 API spelling.
Escalation Triggers
- Authentication & Authorization: Changed documentation contains security/Guard policy guidance and token-bucket rate-limit terminology matching the configured auth/security content trigger.
Notes
The AI assessed this PR as approvable, but the trust level (1) does not allow auto-approval. A human reviewer must approve this PR.
Review: 2a17b408 | Model: openai/gpt-5.5 | Powered by Arcjet Review
* docs: attach the coverage test to the policy it actually verifies The example asserted that every tool comes back guarded, and the sentence above it offered that as the test for the allow-by-default policy. Under that policy the unrecognized tool is supposed to be declined, so the loop reports it on every run and the example is a test that always fails. The assertion belongs to deny by default, where an unlisted tool coming back guarded is the property worth checking. Allow by default needs a different check: compare the guarded names against the names the policy lists, so a tool added without a case fails the test rather than shipping unguarded. Found by arcjet-review on arcjet/arcjet-plugin#25, where the skill was being vendored. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * docs: show the allow-by-default coverage assertion in code The deny-by-default check had sample code and the allow-by-default check had only prose, which invites two readers to implement it two ways. The example names the tools deliberately left unguarded and asserts they are the only ones, so a tool added to the agent without a policy case appears as an entry nobody listed. That is the addition the allow-by-default policy is exposed to, and it is a different assertion from the deny-by-default one above, which is why the two are not shared. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
skills#65 corrected the coverage test in the new agent framework skill. The example asserted that every tool comes back guarded while the sentence above it offered that as the check for an allow-by-default policy, which declines unrecognized tools by design, so the example was a test that always fails. Deny by default keeps that assertion, since an unlisted tool coming back guarded is the property worth checking there. Allow by default gets its own, naming the tools deliberately left unguarded and asserting they are the only ones. Found by arcjet-review on this pull request, fixed upstream first so the vendored tree does not diverge from skills main. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Pull request was closed
|
I have a bot that runs overnight to make sure the plugin syncs @arcjet-rei , and I merged in #26 before seeing this PR! |
|
Whatever's clever! |
Vendors the skill tree from arcjet/skills
mainatb7514f09, the tip after skills#62 and skills#65 merged. Follow-up to the #22 sync ofd9aadab3.New skill:
integrate-arcjet-guard-agent-framework-go, for Go agents built on Microsoft Agent Framework. It coversGuardToolfor a single tool,GuardToolsandGuardMiddlewarefor every tool an agent can see plus inbound screening, andarcjet.GuardActionfor any Go function outside the framework. Thearcjetrouter skill and the Go Guard reference route to it.The coverage test in the new skill is attached to the policy it verifies.
arcjet-reviewcaught this on this PR: the example asserted that every tool comes back guarded while the sentence above it offered that as the check for an allow-by-default policy, which declines unrecognized tools by design, so the example was a test that always fails. Deny by default keeps that assertion; allow by default gets its own, naming the tools deliberately left unguarded and asserting they are the only ones. Fixed upstream in skills#65 first, so the vendored tree does not diverge frommain.The Go references now describe a released SDK rather than a pre-release.
github.com/arcjet/arcjet-gov1.0.0 andgithub.com/arcjet/arcjet-go/agentframeworkv0.1.0 were tagged on 2026-09-17, sogo get ...@latestresolves v1.0.0. The previous text told readers to pin@v1.0.0-rc.2, which would now send them to an older version than the default. The agent framework helpers are a separate module requiring Go 1.26, while the root module stays on Go 1.25, and both references say so.WithCorrelationIdbecameWithCorrelationID, with theCorrelationIdandDecisionIdfield spellings following. That rename shipped in v1.0.0, whereWithCorrelationIdwas the only exported symbol removed sincev1.0.0-rc.2, so the previous copy documented a function that no longer exists.The tip also carries skills#63 (published
@arcjet/*1.12.0 and Pythonarcjet1.1.0) and skills#64 (Claude Managed Agents example URL).Most of the upstream delta does not appear in this diff. The vendored tree stores
dprint-formatted copies, so of the fifteen paths that changed when the tree was copied, eleven collapsed to nothing oncedprint fmtran. The genuine content changes are skills#62 and skills#65.Canonical copy is
plugins/arcjet/skills/;skills/is the inbound symlink.add-ai-protection,add-guard-protection,add-request-protectionandprotect-routeare untouched, andevals/is not vendored.🤖 Generated with Claude Code