@pm_zhousl/xinyun-ai-init 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -11
- package/bin/xinyun-ai-init.js +3 -1
- package/init/xinyun-ai-init/README.md +27 -9
- package/init/xinyun-ai-init/prompt.md +1 -1
- package/init/xinyun-ai-init/templates/manifest.template.json +1 -1
- package/init/xinyun-ai-init/templates/project-index.template.json +1 -1
- package/init/xinyun-ai-init/version.json +2 -2
- package/package.json +7 -2
- package/scripts/publish-with-token.ps1 +91 -0
package/README.md
CHANGED
|
@@ -2,26 +2,48 @@
|
|
|
2
2
|
|
|
3
3
|
欣芸技术开发 Agent 流初始化包。
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Codex 一句话入口
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
用 Codex 打开项目后,直接发送:
|
|
8
|
+
|
|
9
|
+
```md
|
|
10
|
+
请执行 `npx --yes @pm_zhousl/xinyun-ai-init@latest --force`,然后读取 `xinyun-ai-init/README.md`,按其中规则初始化或升级当前项目。
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## 手动使用
|
|
8
14
|
|
|
9
15
|
```bash
|
|
10
|
-
npx @pm_zhousl/xinyun-ai-init
|
|
16
|
+
npx --yes @pm_zhousl/xinyun-ai-init@latest --force
|
|
11
17
|
```
|
|
12
18
|
|
|
13
|
-
|
|
19
|
+
执行后会在当前目录生成 `xinyun-ai-init/`。
|
|
14
20
|
|
|
15
|
-
|
|
16
|
-
|
|
21
|
+
## 注意
|
|
22
|
+
|
|
23
|
+
该 CLI 只释放初始化包,不修改业务代码、不创建 `xinyun-ai/`。
|
|
24
|
+
|
|
25
|
+
完整执行要求已经内置在 `xinyun-ai-init/README.md`、`rules/` 和 `templates/` 中。后续不需要复制长提示词,只需要让 AI 读取本地释放出来的 `xinyun-ai-init/README.md`。
|
|
26
|
+
|
|
27
|
+
## 维护者发布
|
|
28
|
+
|
|
29
|
+
发布新版时,在本包目录执行:
|
|
30
|
+
|
|
31
|
+
```powershell
|
|
32
|
+
npm run publish:token
|
|
17
33
|
```
|
|
18
34
|
|
|
19
|
-
|
|
35
|
+
脚本会提示输入 npm token,临时写入 `.npmrc`,发布完成或失败后自动删除 `.npmrc`。
|
|
20
36
|
|
|
21
|
-
|
|
22
|
-
|
|
37
|
+
如果需要让 AI 代执行,可先在当前终端设置临时环境变量:
|
|
38
|
+
|
|
39
|
+
```powershell
|
|
40
|
+
$env:NPM_TOKEN="你的 npm token"
|
|
41
|
+
npm run publish:token
|
|
42
|
+
$env:NPM_TOKEN=$null
|
|
23
43
|
```
|
|
24
44
|
|
|
25
|
-
|
|
45
|
+
发布前预演:
|
|
26
46
|
|
|
27
|
-
|
|
47
|
+
```powershell
|
|
48
|
+
npm run publish:token:dry
|
|
49
|
+
```
|
package/bin/xinyun-ai-init.js
CHANGED
|
@@ -48,7 +48,9 @@ function main() {
|
|
|
48
48
|
function printNextStep() {
|
|
49
49
|
console.log("下一步:把下面这句话发给 Codex / Cursor / Claude Code:");
|
|
50
50
|
console.log("");
|
|
51
|
-
console.log("
|
|
51
|
+
console.log("请执行 `npx --yes @pm_zhousl/xinyun-ai-init@latest --force`,然后读取 `xinyun-ai-init/README.md`,按其中规则初始化或升级当前项目。");
|
|
52
|
+
console.log("");
|
|
53
|
+
console.log("完整执行要求已经在 xinyun-ai-init/README.md 内,不需要再粘贴长提示词。");
|
|
52
54
|
console.log("");
|
|
53
55
|
}
|
|
54
56
|
|
|
@@ -1,18 +1,36 @@
|
|
|
1
1
|
# xinyun-ai-init 初始化包
|
|
2
2
|
|
|
3
|
-
本目录是“欣芸技术开发 Agent
|
|
3
|
+
本目录是“欣芸技术开发 Agent 流”的初始化包,负责把完整 AI 执行要求下发到目标项目。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## Codex 一句话入口
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
```md
|
|
8
|
+
请执行 `npx --yes @pm_zhousl/xinyun-ai-init@latest --force`,然后读取 `xinyun-ai-init/README.md`,按其中规则初始化或升级当前项目。
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
AI 读取本文件后,必须把本 README、`rules/`、`templates/` 作为执行依据;用户不需要再粘贴长规则。
|
|
12
|
+
|
|
13
|
+
## 手动使用
|
|
11
14
|
|
|
12
15
|
```md
|
|
13
|
-
|
|
16
|
+
npx --yes @pm_zhousl/xinyun-ai-init@latest --force
|
|
14
17
|
```
|
|
15
18
|
|
|
19
|
+
执行上面的命令后,会生成 `xinyun-ai-init/`。随后让 AI 读取 `xinyun-ai-init/README.md` 即可。
|
|
20
|
+
|
|
21
|
+
## AI 执行入口
|
|
22
|
+
|
|
23
|
+
AI 读取本文件后,必须按以下方式执行:
|
|
24
|
+
|
|
25
|
+
1. 如果当前项目没有 `xinyun-ai/`,进入极速初始化模式。
|
|
26
|
+
2. 如果当前项目已有 `xinyun-ai/`,进入升级检查模式。
|
|
27
|
+
3. 未获用户确认前,不得修改业务代码、配置、数据库、依赖、构建脚本、测试逻辑、API 行为、UI 行为或业务流程。
|
|
28
|
+
4. 代码整改前必须先输出修改方案,等待用户明确确认后才能执行。
|
|
29
|
+
5. 涉及 SQL / 数据库改动时,必须单独输出 SQL 执行提醒。
|
|
30
|
+
6. 非项目开发内容不要沉淀。
|
|
31
|
+
7. 首次初始化不执行语言级语法检查、lint、typecheck、测试或构建命令;本机缺少运行时只记录为待确认,不展开长解释。
|
|
32
|
+
8. 完成后用中文输出初始化或升级结果、项目导读、待确认问题和后续短指令。
|
|
33
|
+
|
|
16
34
|
## 欣芸技术开发 Agent 流
|
|
17
35
|
|
|
18
36
|
这是一套面向 AI 编程工具的本地项目接手、按需理解、受控开发和持续沉淀方法论。
|
|
@@ -40,8 +58,8 @@
|
|
|
40
58
|
- 读取 `xinyun-ai/manifest.json`、`xinyun-ai/README.md`、`xinyun-ai/rules/core-rules.md`、`xinyun-ai/index/project-index.json`。
|
|
41
59
|
- 对比 `xinyun-ai-init/version.json`。
|
|
42
60
|
- 进入升级检查模式。
|
|
43
|
-
-
|
|
44
|
-
-
|
|
61
|
+
- 输出升级方案,等待用户确认。
|
|
62
|
+
- 用户确认后,只升级 `xinyun-ai/` 内相关文件,不修改业务代码。
|
|
45
63
|
|
|
46
64
|
## 首次最小落盘
|
|
47
65
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
请执行 `npx --yes @pm_zhousl/xinyun-ai-init@latest --force`,然后读取 `xinyun-ai-init/README.md`,按其中规则初始化或升级当前项目。
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
{
|
|
2
2
|
"name": "@pm_zhousl/xinyun-ai-init",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"description": "欣芸技术开发 Agent 流初始化包",
|
|
5
5
|
"bin": {
|
|
6
6
|
"xinyun-ai-init": "bin/xinyun-ai-init.js"
|
|
@@ -8,8 +8,13 @@
|
|
|
8
8
|
"files": [
|
|
9
9
|
"bin/",
|
|
10
10
|
"init/",
|
|
11
|
+
"scripts/",
|
|
11
12
|
"README.md"
|
|
12
13
|
],
|
|
14
|
+
"scripts": {
|
|
15
|
+
"publish:token": "powershell -ExecutionPolicy Bypass -File ./scripts/publish-with-token.ps1",
|
|
16
|
+
"publish:token:dry": "powershell -ExecutionPolicy Bypass -File ./scripts/publish-with-token.ps1 -DryRun"
|
|
17
|
+
},
|
|
13
18
|
"keywords": [
|
|
14
19
|
"xinyun-ai",
|
|
15
20
|
"codex",
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
param(
|
|
2
|
+
[string]$Registry = "https://registry.npmjs.org/",
|
|
3
|
+
[switch]$DryRun
|
|
4
|
+
)
|
|
5
|
+
|
|
6
|
+
$ErrorActionPreference = "Stop"
|
|
7
|
+
|
|
8
|
+
$ProjectRoot = Resolve-Path (Join-Path $PSScriptRoot "..")
|
|
9
|
+
$NpmrcPath = Join-Path $ProjectRoot ".npmrc"
|
|
10
|
+
$PackageJsonPath = Join-Path $ProjectRoot "package.json"
|
|
11
|
+
|
|
12
|
+
function Assert-CommandExists {
|
|
13
|
+
param([string]$Name)
|
|
14
|
+
|
|
15
|
+
if (-not (Get-Command $Name -ErrorAction SilentlyContinue)) {
|
|
16
|
+
throw "Missing command: $Name. Please install or configure $Name first."
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function ConvertTo-PlainText {
|
|
21
|
+
param([securestring]$SecureValue)
|
|
22
|
+
|
|
23
|
+
$ptr = [Runtime.InteropServices.Marshal]::SecureStringToBSTR($SecureValue)
|
|
24
|
+
try {
|
|
25
|
+
return [Runtime.InteropServices.Marshal]::PtrToStringBSTR($ptr)
|
|
26
|
+
} finally {
|
|
27
|
+
if ($ptr -ne [IntPtr]::Zero) {
|
|
28
|
+
[Runtime.InteropServices.Marshal]::ZeroFreeBSTR($ptr)
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
Push-Location $ProjectRoot
|
|
34
|
+
|
|
35
|
+
try {
|
|
36
|
+
Assert-CommandExists "node"
|
|
37
|
+
Assert-CommandExists "npm"
|
|
38
|
+
|
|
39
|
+
$Package = Get-Content -Raw -Encoding UTF8 $PackageJsonPath | ConvertFrom-Json
|
|
40
|
+
Write-Host "[xinyun-ai-init] Publish target: $($Package.name)@$($Package.version)"
|
|
41
|
+
Write-Host "[xinyun-ai-init] Registry: $Registry"
|
|
42
|
+
|
|
43
|
+
if (Test-Path $NpmrcPath) {
|
|
44
|
+
Remove-Item -LiteralPath $NpmrcPath -Force
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
$Token = [Environment]::GetEnvironmentVariable("NPM_TOKEN")
|
|
48
|
+
|
|
49
|
+
if ([string]::IsNullOrWhiteSpace($Token)) {
|
|
50
|
+
$SecureToken = Read-Host "Paste npm token" -AsSecureString
|
|
51
|
+
$Token = ConvertTo-PlainText $SecureToken
|
|
52
|
+
} else {
|
|
53
|
+
Write-Host "[xinyun-ai-init] Using NPM_TOKEN from environment."
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
if ([string]::IsNullOrWhiteSpace($Token)) {
|
|
57
|
+
throw "NPM token is empty. Publish cancelled."
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
$Utf8NoBom = New-Object System.Text.UTF8Encoding($false)
|
|
61
|
+
[System.IO.File]::WriteAllLines(
|
|
62
|
+
$NpmrcPath,
|
|
63
|
+
@(
|
|
64
|
+
"@pm_zhousl:registry=$Registry",
|
|
65
|
+
"//registry.npmjs.org/:_authToken=$Token"
|
|
66
|
+
),
|
|
67
|
+
$Utf8NoBom
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
Write-Host "[xinyun-ai-init] Validate JSON..."
|
|
71
|
+
node -e "JSON.parse(require('fs').readFileSync('package.json','utf8')); JSON.parse(require('fs').readFileSync('init/xinyun-ai-init/version.json','utf8')); console.log('json ok')"
|
|
72
|
+
|
|
73
|
+
if ($DryRun) {
|
|
74
|
+
Write-Host "[xinyun-ai-init] Run npm publish dry-run..."
|
|
75
|
+
npm publish --access public --registry=$Registry --dry-run
|
|
76
|
+
} else {
|
|
77
|
+
Write-Host "[xinyun-ai-init] Run npm publish..."
|
|
78
|
+
npm publish --access public --registry=$Registry
|
|
79
|
+
|
|
80
|
+
Write-Host "[xinyun-ai-init] Check published version..."
|
|
81
|
+
npm view $Package.name version --registry=$Registry
|
|
82
|
+
}
|
|
83
|
+
} finally {
|
|
84
|
+
if (Test-Path $NpmrcPath) {
|
|
85
|
+
Remove-Item -LiteralPath $NpmrcPath -Force
|
|
86
|
+
Write-Host "[xinyun-ai-init] Removed temporary .npmrc"
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
$Token = $null
|
|
90
|
+
Pop-Location
|
|
91
|
+
}
|