<< All versions
Skill v1.0.1
currentLLM-judged scan90/100babarot/gh-infra/file-manifest
+1 new
──Details
PublishedOctober 24, 2026 at 04:03 AM
Content Hashsha256:d22b9f918ff42996...
Git SHA9725bf366674
Bump Typepatch
──Files
Files (1 file, 3.4 KB)
SKILL.md3.4 KBactive
SKILL.md · 113 lines · 3.4 KB
version: "1.0.1" name: file-manifest description: > Complete YAML schema reference for File and FileSet resources. Use when writing manifests to manage files (CODEOWNERS, LICENSE, CI workflows, etc.) in one or more repositories, including templating, patches, reconcile modes, delivery method, and import-into behavior.
File Manifest Reference
Use this skill for file-distribution manifests. Keep the main body small and open references only when the request needs them.
Core Rules
Fileis parsed as a one-repoFileSetinternally, but you still author the simpler shape- Each file entry requires
pathand exactly one ofcontentorsource viadefaults topushreconciledefaults toadditivepatchesare applied after template expansion
File
yaml
apiVersion: gh-infra/v1kind: Filemetadata:owner: my-orgname: my-repospec:files:- path: .github/CODEOWNERScontent: |* @username- path: LICENSEsource: ./templates/LICENSEvia: pushcommit_message: "ci: sync managed files"
Key fields:
files: requiredvia:pushorpull_requestcommit_message,branch,pr_title,pr_body: delivery controls.commit_message,pr_title,pr_bodyaccept<% .Repo.Name %>,<% .Repo.FullName %>,<% .Source.URL %>(envGH_INFRA_SOURCE_URL, set in CI); see references/reconcile-and-delivery.mdfiles[].vars: template variablesfiles[].patches: unified diff patchesfiles[].reconcile:additive,authoritative,create_onlyfiles[].executable:truefor mode 100755,falsefor 100644, omitted keeps the current mode
Read these references as needed:
- Sources and templating: references/sources-and-templating.md
- Reconcile and delivery: references/reconcile-and-delivery.md
- Patches: references/patches.md
- FileSet and overrides: references/fileset.md
- Import-into behavior: use the dedicated
import-intoskill
FileSet
Use FileSet to distribute shared files to many repositories.
yaml
apiVersion: gh-infra/v1kind: FileSetmetadata:owner: my-orgname: shared-ci # optional; names the FileSet, does not select reposspec:repositories:- gomi # simple string- enhancd- name: gh-infra # struct with overridesoverrides:- path: .github/CODEOWNERScontent: |* @username @co-maintainerfiles:- path: .github/CODEOWNERScontent: |* @username- path: LICENSEsource: ./templates/LICENSEvia: push
Each repository entry is either:
- a simple repo name string
- an object with
nameand optionaloverrides
Overrides replace the matching base entry by path for that repository only.
High-Value Gotchas
- Prefer patch files over inline patch blocks for files with tabs
- Patch context must match template-expanded content, not raw template source
github://sources are import hard-skips because there is no local write target- Shared local source files in
FileSetoften default to thepatchwrite action inimport --into create_onlyaffects apply behavior, but import can still update the local master template
Verification
bash
gh infra validate <path>gh infra plan <path>