Fencang Release (passphrase-gated)
Codex alias for CI发布工程师-分仓发布. Do not run unless the user message contains 分仓.
Canonical paths
| Purpose |
Path |
| Full skill body (keep in sync) |
dev/ai/skills/CI发布工程师-分仓发布/SKILL.md |
| PowerShell scripts |
dev/tools/fencang/ |
| AI routing index |
dev/ai/skills/_index.md |
Passphrase scope
| User says |
Scope |
分仓 Framework |
Only Framework |
分仓 Admin,Backend |
Only listed modules |
分仓 --all |
All mapped modules |
分仓 alone |
Ask which module; do not run |
Quick commands (from repo root)
$Fencang = 'dev\tools\fencang'
.\$Fencang\fencang-sync.ps1 -Modules Framework
.\$Fencang\fencang-sync.ps1 -Modules Admin,Backend
.\$Fencang\fencang-sync.ps1 -All
.\$Fencang\fencang-sync.ps1 -Modules Framework -WelineRoot E:\WelineFramework\weline
pwsh ./dev/tools/fencang/fencang-sync.ps1 -Modules Framework
.\$Fencang\bump-tag.ps1 -CurrentTag v1.2.9
.\$Fencang\refresh-packagist.ps1 -RepoPath E:\WelineFramework\框架-分仓\weline-module-admin
Workflow summary
- Resolve split root: default
{DEV_ROOT}/../框架-分仓; use -WelineRoot only when explicitly provided.
- Ensure each mapped repo exists: existing
.git repos are reused; missing repos are cloned from origin=https://gitee.com/aiweline/{repo}.git with GitHub fallback and github=https://github.com/Aiweline/{repo}.git.
- Pre-check with
robocopy /L /MIR on Windows or portable hash compare on macOS/Linux; if no diff, skip copy, commit, tag, push, and Packagist.
- Mirror
app/code/Weline/{Module}/ into the repo root while preserving .git, vendor, .idea, node_modules, and .DS_Store.
- Review git status/diff; dirty existing repos are refused, remote fetch failures are reported as warnings, and empty syncs skip commit/tag/push.
- Bump tag (patch +1, carry at 9), commit, push
origin + github (branch + tag), then call Packagist update.
- Report per module: root path, clone/reuse status, old/new tag, Packagist result, push result.
For mapping table, remote URL rules, Packagist credential configuration, and guardrails, read the canonical skill file above.
1---2name: fencang-release3description: Fencang Release4---56# Fencang Release (passphrase-gated)78Codex alias for `CI发布工程师-分仓发布`. **Do not run unless the user message contains `分仓`.**910## Canonical paths1112| Purpose | Path |13|---|---|14| Full skill body (keep in sync) | `dev/ai/skills/CI发布工程师-分仓发布/SKILL.md` |15| PowerShell scripts | `dev/tools/fencang/` |16| AI routing index | `dev/ai/skills/_index.md` |1718## Passphrase scope1920| User says | Scope |21|---|---|22| `分仓 Framework` | **Only** `Framework` |23| `分仓 Admin,Backend` | **Only** listed modules |24| `分仓 --all` | All mapped modules |25| `分仓` alone | Ask which module; do not run |2627## Quick commands (from repo root)2829```powershell30$Fencang = 'dev\tools\fencang'3132.\$Fencang\fencang-sync.ps1 -Modules Framework33.\$Fencang\fencang-sync.ps1 -Modules Admin,Backend34.\$Fencang\fencang-sync.ps1 -All35.\$Fencang\fencang-sync.ps1 -Modules Framework -WelineRoot E:\WelineFramework\weline36pwsh ./dev/tools/fencang/fencang-sync.ps1 -Modules Framework37.\$Fencang\bump-tag.ps1 -CurrentTag v1.2.938.\$Fencang\refresh-packagist.ps1 -RepoPath E:\WelineFramework\框架-分仓\weline-module-admin39```4041## Workflow summary42431. Resolve split root: default `{DEV_ROOT}/../框架-分仓`; use `-WelineRoot` only when explicitly provided.442. Ensure each mapped repo exists: existing `.git` repos are reused; missing repos are cloned from `origin=https://gitee.com/aiweline/{repo}.git` with GitHub fallback and `github=https://github.com/Aiweline/{repo}.git`.453. Pre-check with `robocopy /L /MIR` on Windows or portable hash compare on macOS/Linux; if no diff, skip copy, commit, tag, push, and Packagist.464. Mirror `app/code/Weline/{Module}/` into the repo root while preserving `.git`, `vendor`, `.idea`, `node_modules`, and `.DS_Store`.475. Review git status/diff; dirty existing repos are refused, remote fetch failures are reported as warnings, and empty syncs skip commit/tag/push.486. Bump tag (patch +1, carry at 9), commit, push `origin` + `github` (branch + tag), then call Packagist update.497. Report per module: root path, clone/reuse status, old/new tag, Packagist result, push result.5051For mapping table, remote URL rules, Packagist credential configuration, and guardrails, read the canonical skill file above.