本文へ移動
cccskills
無料GitHub で公開

using-bgs-archive

Use when the user wants to inspect, list, extract, unpack, or repack Bethesda BA2/BSA archives; determine archive format/version/compression; or build archive assets for an MO2 overlay. Triggers - "unpack BA2", "extract BSA", "pack archive", "inspect archive", "bgs-archive".

インストール方法を見る

含まれるファイル(1)

  • SKILL.md9.3 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Using bgs-archive

bgs-archive is the agent-native CLI for Bethesda BA2/BSA archives. It detects archive family/version, lists entries, extracts assets, and packs supported BSA/BA2 outputs for MO2 overlay workflows.

Use this skill for:

  • unpacking or extracting BA2/BSA assets;
  • repacking supported BA2/BSA archives;
  • inspecting archive contents, format, version, compression, or entry counts;
  • preparing packed assets for a mod overlay.

Do not use it for plugin records (.esp/.esm/.esl) or load-order edits. Route those through xEdit / load-order skills.

Prerequisites — capability discovery first

Always query the live binary before choosing a game, format, or packing path:

bgs-archive --json capabilities
# Alias:
bgs-archive --json caps

Read the JSON envelope and branch on data.write_support and data.read_support. Do not assume DX10 or GNMF packing exists just because DX10/GNMF extraction works.

If bgs-archive is not on PATH, locate the GitHub Release-installed binary under:

~/.bgs-modding-superpowers/tools/bgs-archive/<version>/

or build from the source tree:

cd D:\awesome-bgs-mod-master\tools\bgs-archive
$env:PATH = "$env:USERPROFILE\.cargo\bin;$env:PATH"
cargo build --release
target\release\bgs-archive.exe --json capabilities

Hard rules

  • Never write a packed archive into the game's Data folder or any Stock-Game tree.
  • Pack output belongs in an MO2 mod overlay: <MO2_Root>/mods/<mod-name>/Data/....
  • Extract and inspect archives freely, but keep extraction outputs in a workspace or overlay staging folder, not in game Data.
  • DX10/GNMF pack is unsupported in this version. Extract works; packing returns unsupported.
  • Use --json for agent workflows and branch on the envelope, not human text.

资产优先级判断 / Asset precedence judgment

Asset precedence is the runtime question "which asset bytes does the game actually read for this virtual path?" It is related to load order, but it is not the same layer as plugin-record conflict resolution.

Core rules:

  • Loose files win over archive contents at the same virtual path. If a loose textures/... or meshes/... file is active, it can mask every packed copy of that path.
  • Archive-to-archive order follows the plugin/load-order surface (plugins.txt / the game's active plugin order), not MO2 left-pane mod order. Moving a mod in the left pane may change loose-file winners, but it does not by itself prove a packed archive entry will win.
  • Before extracting, identify the layer: asset path conflict, archive count/format issue, or plugin record conflict. Do not solve the wrong problem with the wrong tool.
  • For current-game engine caveats or archive-count/packaging diagnostics, query the KB instead of inlining rules here:
bgs_kb_query({ query: "asset precedence engine caveat", games: ["<current game>"], domains: ["engine", "archive-precedence"] })
bgs_kb_query({ query: "archive count or packaging CTD", games: ["<current game>"], domains: ["archive-precedence", "debugging"] })

Red flags:

ThoughtReality
"The wrong texture/model loaded, so I should reorder plugins first."First inspect the final asset provider chain. Wrong bytes are usually an asset-precedence question before they are a record-order question.
"MO2 left-pane priority controls packed assets too."Left-pane priority controls loose-file winners. Packed archive winners are tied to the plugin/load-order surface.
"I'll extract every archive loose so conflicts are obvious."Bulk extraction creates duplicate active surfaces and can make the final tree harder to reason about. Extract only a bounded diagnostic set or a deliberate overlay.
"A current game's engine-specific archive/precompute problem belongs in this archive skill."That is game-specific engine knowledge. Query the relevant KB record and keep this skill game-agnostic.
"The archive command succeeded, so the runtime winner changed."Run info/list and inspect the MO2 final virtual path/provider chain before claiming the game will read the new asset.

Rationalizations:

ExcuseReality
"Plugin order changed, so asset order must be fixed."Only plugin-associated archives follow that surface; loose files can still override the packed winner.
"It's just a texture, not a real conflict."Asset conflicts are real runtime behavior. A single winning mesh, texture, interface file, or script can be the visible bug.
"Unpacking is reversible, so I'll do it broadly."Reversible clutter is still clutter. Keep extraction bounded and staged outside game Data.
"The FO4 recipe is known, so paste it here."Game facts belong in KB. The archive skill teaches the judgment frame and asks KB for game-specific facts.
"If the file is in a BA2/BSA, MO2 mod priority is irrelevant."It is different, not irrelevant: archives route through active plugins/load order.

After asset precedence is understood, route record-level conflicts to xedit-conflict-audit. Archives decide files; xEdit decides plugin records.

JSON envelope contract

Every --json command returns one stdout object:

{
  "ok": true,
  "tool": "bgs-archive",
  "command": "capabilities",
  "data": {},
  "error": null
}

On classified failures:

{
  "ok": false,
  "tool": "bgs-archive",
  "command": "pack",
  "data": null,
  "error": { "code": "unsupported", "message": "dx10_pack not yet supported (Task A-DX10)" }
}

Commands

Check bgs-archive --help and <subcommand> --help for the current option surface. The examples below are templates.

capabilities

Use first to discover supported games, subcommands, read support, and write support.

bgs-archive --json capabilities

Expected machine output includes:

{"ok":true,"tool":"bgs-archive","command":"capabilities","data":{"games":["morrowind","oblivion","fallout3","falloutnv","skyrimle","skyrimse","fallout4","fallout4ng","fallout76","starfield"],"write_support":{"tes3":true,"tes4":true,"fo4_gnrl":true,"dx10":false,"gnmf":false},"read_support":{"all_families":true}},"error":null}

info

Detect archive family, version, BA2 format, compression, and entry count.

bgs-archive --json info "D:\path\to\Archive.ba2"

Expected machine output shape:

{"ok":true,"tool":"bgs-archive","command":"info","data":{"path":"D:\\path\\to\\Archive.ba2","family":"fo4","version":1,"format":"GNRL","compression":"Zip","entry_count":42},"error":null}

list

List archive entries, optionally with a glob filter and long metadata.

bgs-archive --json list "D:\path\to\Archive.ba2" --filter "textures/**/*.dds" --long

Expected machine output shape:

{"ok":true,"tool":"bgs-archive","command":"list","data":[{"path":"textures/example/diffuse.dds","size":4096,"compressed":true}],"error":null}

extract

Extract to a chosen directory. Use filters to keep agent runs bounded.

bgs-archive --json extract "D:\path\to\Archive.ba2" --out "D:\work\archive-extract" --filter "meshes/**/*.nif"

Expected machine output shape:

{"ok":true,"tool":"bgs-archive","command":"extract","data":{"output_dir":"D:\\work\\archive-extract","extracted_count":1,"paths":["meshes/example/static.nif"]},"error":null}

pack

Pack a directory into a supported output. The output path must be inside an MO2 mod overlay when the result is game-local content.

$overlay = "D:\ModOrganizer\mods\My Packed Assets"
bgs-archive --json pack "$overlay\source-assets" "$overlay\Data\MyPackedAssets - Main.ba2" --game fallout4 --format gnrl --compress zip

Expected machine output shape:

{"ok":true,"tool":"bgs-archive","command":"pack","data":{"out_archive":"D:\\ModOrganizer\\mods\\My Packed Assets\\Data\\MyPackedAssets - Main.ba2","family":"fo4","version":1,"entry_count":12},"error":null}

Unsupported DX10/GNMF pack example:

bgs-archive --json pack "$overlay\source-assets" "$overlay\Data\Textures.ba2" --game fallout4 --format dx10

Expected result:

{"ok":false,"tool":"bgs-archive","command":"pack","data":null,"error":{"code":"unsupported","message":"dx10_pack not yet supported (Task A-DX10)"}}

Coverage notes

  • Read/extract: Oblivion BSA v103, Fallout 3/New Vegas/Skyrim LE BSA v104, Skyrim SE/AE BSA v105, Fallout 4 BA2 v1, Fallout 4 NG BA2 v7/v8, Fallout 76 BA2 v1, Starfield BA2 v2 GNRL/v3 DX10.
  • Pack/write: TES3, TES4-family BSA versions, and FO4-family GNRL BA2 v1/v2/v7/v8.
  • DX10 and GNMF packing are not supported. Extracting those formats is supported.

Safe workflow pattern

  1. Run bgs-archive --json capabilities.
  2. Run info on the source archive.
  3. Run list --filter ... to bound the exact asset set.
  4. Extract into a workspace or overlay staging folder.
  5. If packing, write only to <MO2_Root>/mods/<mod-name>/Data/....
  6. Run info and list on the packed archive as readback before reporting success.

Remember: game Data and Stock-Game trees are read-only real state. MO2 overlays are the correct Vault-Tec-approved safety containment chamber.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Use AtomLane to compile and execute safe atomic parallel plans on macOS and native Windows Preview for worthwhile independent argv tasks, dependency DAGs, supported platform entrypoints, or Apple-silicon operators. Use at task start or an execution boundary when structured local work may contain two or more worthwhile units; skip plain answers, one quick command, and work whose effects cannot be safely bounded.

日本語の概要は準備中です。原文の説明を表示しています。

hashgraph-online/awesome-codex-plugins1,2732026年10月10日 更新

add

無料

Register a deferred decision in the debt registry. Trigger by judgment, not a marker scan, whenever a future reader would ask "why this way?": an unmade decision, stub, loosened type, bypassed check, swallowed error, a default picked "for now", or a TODO/FIXME/HACK/XXX marker. Trigger immediately whenever you defer work, or when the user invokes $add. Over-register freely; the developer drops with "drop A", "drop A,C", or "drop all".

日本語の概要は準備中です。原文の説明を表示しています。

hashgraph-online/awesome-codex-plugins1,2732026年10月10日 更新

ADK 框架适配层。为 LangChain / EINO / AutoGen / AgentScope / CrewAI 提供框架特定的 代码模板、惯用模式、API 映射和项目结构,供 agent-dev-workshop Phase 5 代码生成使用。 每个框架 reference 文件标注 verified_date 用于版本锁定。

日本語の概要は準備中です。原文の説明を表示しています。

hashgraph-online/awesome-codex-plugins1,2732026年10月10日 更新

中文调试修复技能。用于报错、测试失败、页面异常、功能不符合预期、需要定位根因并做最小修复时。触发语包括"进入调试模式""帮我修问题""报错了""测试失败""页面坏了""找根因"。

日本語の概要は準備中です。原文の説明を表示しています。

hashgraph-online/awesome-codex-plugins1,2732026年10月10日 更新

交互式 AI Agent 开发工作坊:通过 6 阶段深度协作对话,引导用户完成 Agent 需求分析、架构设计、 工具定义、Prompt 与编排设计、代码生成、验证迭代,产出可直接运行的 Agent 项目。 框架无关设计优先,支持 LangChain / EINO / AutoGen / AgentScope / CrewAI 等 ADK 框架。

日本語の概要は準備中です。原文の説明を表示しています。

hashgraph-online/awesome-codex-plugins1,2732026年10月10日 更新

中文漂移审计技能。用于项目或学习过程变乱、上下文漂移、任务分叉、多个方案冲突、命名不一致、Codex 可能顺手改多了时。触发语包括"漂移检查""感觉跑偏了""项目变乱了""检查是否失控""分叉太多""上下文漂移"。

日本語の概要は準備中です。原文の説明を表示しています。

hashgraph-online/awesome-codex-plugins1,2732026年10月10日 更新

hashgraph-online のスキルをすべて見る

このスキルの問題を報告する