@devflow-tools/cli 0.12.5 → 0.12.6

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.
Files changed (154) hide show
  1. package/package.json +2 -2
  2. package/dist/commands/benchmark-cmd.d.ts +0 -5
  3. package/dist/commands/benchmark-cmd.d.ts.map +0 -1
  4. package/dist/commands/benchmark-cmd.js +0 -18
  5. package/dist/commands/benchmark-cmd.js.map +0 -1
  6. package/dist/commands/connect.d.ts +0 -8
  7. package/dist/commands/connect.d.ts.map +0 -1
  8. package/dist/commands/connect.js +0 -26
  9. package/dist/commands/connect.js.map +0 -1
  10. package/dist/commands/context.d.ts +0 -15
  11. package/dist/commands/context.d.ts.map +0 -1
  12. package/dist/commands/context.js +0 -24
  13. package/dist/commands/context.js.map +0 -1
  14. package/dist/commands/dashboard.d.ts +0 -3
  15. package/dist/commands/dashboard.d.ts.map +0 -1
  16. package/dist/commands/dashboard.js +0 -10
  17. package/dist/commands/dashboard.js.map +0 -1
  18. package/dist/commands/doctor.d.ts +0 -56
  19. package/dist/commands/doctor.d.ts.map +0 -1
  20. package/dist/commands/doctor.js +0 -156
  21. package/dist/commands/doctor.js.map +0 -1
  22. package/dist/commands/graph.d.ts +0 -11
  23. package/dist/commands/graph.d.ts.map +0 -1
  24. package/dist/commands/graph.js +0 -14
  25. package/dist/commands/graph.js.map +0 -1
  26. package/dist/commands/index-cmd.d.ts +0 -4
  27. package/dist/commands/index-cmd.d.ts.map +0 -1
  28. package/dist/commands/index-cmd.js +0 -15
  29. package/dist/commands/index-cmd.js.map +0 -1
  30. package/dist/commands/init.d.ts +0 -20
  31. package/dist/commands/init.d.ts.map +0 -1
  32. package/dist/commands/init.js +0 -145
  33. package/dist/commands/init.js.map +0 -1
  34. package/dist/commands/knowledge.d.ts +0 -5
  35. package/dist/commands/knowledge.d.ts.map +0 -1
  36. package/dist/commands/knowledge.js +0 -23
  37. package/dist/commands/knowledge.js.map +0 -1
  38. package/dist/commands/memory.d.ts +0 -5
  39. package/dist/commands/memory.d.ts.map +0 -1
  40. package/dist/commands/memory.js +0 -72
  41. package/dist/commands/memory.js.map +0 -1
  42. package/dist/commands/plugin/install.d.ts +0 -3
  43. package/dist/commands/plugin/install.d.ts.map +0 -1
  44. package/dist/commands/plugin/install.js +0 -22
  45. package/dist/commands/plugin/install.js.map +0 -1
  46. package/dist/commands/plugin/list.d.ts +0 -3
  47. package/dist/commands/plugin/list.d.ts.map +0 -1
  48. package/dist/commands/plugin/list.js +0 -47
  49. package/dist/commands/plugin/list.js.map +0 -1
  50. package/dist/commands/plugin/search.d.ts +0 -3
  51. package/dist/commands/plugin/search.d.ts.map +0 -1
  52. package/dist/commands/plugin/search.js +0 -29
  53. package/dist/commands/plugin/search.js.map +0 -1
  54. package/dist/commands/plugin/uninstall.d.ts +0 -3
  55. package/dist/commands/plugin/uninstall.d.ts.map +0 -1
  56. package/dist/commands/plugin/uninstall.js +0 -21
  57. package/dist/commands/plugin/uninstall.js.map +0 -1
  58. package/dist/commands/plugin-guide.d.ts +0 -19
  59. package/dist/commands/plugin-guide.d.ts.map +0 -1
  60. package/dist/commands/plugin-guide.js +0 -131
  61. package/dist/commands/plugin-guide.js.map +0 -1
  62. package/dist/commands/plugin-loader.d.ts +0 -2
  63. package/dist/commands/plugin-loader.d.ts.map +0 -1
  64. package/dist/commands/plugin-loader.js +0 -2
  65. package/dist/commands/plugin-loader.js.map +0 -1
  66. package/dist/commands/review.d.ts +0 -6
  67. package/dist/commands/review.d.ts.map +0 -1
  68. package/dist/commands/review.js +0 -75
  69. package/dist/commands/review.js.map +0 -1
  70. package/dist/commands/server.d.ts +0 -16
  71. package/dist/commands/server.d.ts.map +0 -1
  72. package/dist/commands/server.js +0 -88
  73. package/dist/commands/server.js.map +0 -1
  74. package/dist/commands/session.d.ts +0 -7
  75. package/dist/commands/session.d.ts.map +0 -1
  76. package/dist/commands/session.js +0 -20
  77. package/dist/commands/session.js.map +0 -1
  78. package/dist/commands/setup.d.ts +0 -6
  79. package/dist/commands/setup.d.ts.map +0 -1
  80. package/dist/commands/setup.js +0 -78
  81. package/dist/commands/setup.js.map +0 -1
  82. package/dist/commands/skill.d.ts +0 -18
  83. package/dist/commands/skill.d.ts.map +0 -1
  84. package/dist/commands/skill.js +0 -105
  85. package/dist/commands/skill.js.map +0 -1
  86. package/dist/commands/start.d.ts +0 -5
  87. package/dist/commands/start.d.ts.map +0 -1
  88. package/dist/commands/start.js +0 -58
  89. package/dist/commands/start.js.map +0 -1
  90. package/dist/commands/status.d.ts +0 -2
  91. package/dist/commands/status.d.ts.map +0 -1
  92. package/dist/commands/status.js +0 -33
  93. package/dist/commands/status.js.map +0 -1
  94. package/dist/commands/stop.d.ts +0 -2
  95. package/dist/commands/stop.d.ts.map +0 -1
  96. package/dist/commands/stop.js +0 -12
  97. package/dist/commands/stop.js.map +0 -1
  98. package/dist/commands/workflow.d.ts +0 -6
  99. package/dist/commands/workflow.d.ts.map +0 -1
  100. package/dist/commands/workflow.js +0 -24
  101. package/dist/commands/workflow.js.map +0 -1
  102. package/dist/index.d.ts +0 -3
  103. package/dist/index.d.ts.map +0 -1
  104. package/dist/index.js +0 -606
  105. package/dist/index.js.map +0 -1
  106. package/dist/lib/dashboard-cache.d.ts +0 -3
  107. package/dist/lib/dashboard-cache.d.ts.map +0 -1
  108. package/dist/lib/dashboard-cache.js +0 -97
  109. package/dist/lib/dashboard-cache.js.map +0 -1
  110. package/dist/lib/paths.d.ts +0 -1
  111. package/dist/lib/paths.d.ts.map +0 -1
  112. package/dist/lib/paths.js +0 -4
  113. package/dist/lib/paths.js.map +0 -1
  114. package/dist/lib/plugin-registry.d.ts +0 -18
  115. package/dist/lib/plugin-registry.d.ts.map +0 -1
  116. package/dist/lib/plugin-registry.js +0 -39
  117. package/dist/lib/plugin-registry.js.map +0 -1
  118. package/dist/lib/plugin-setup.d.ts +0 -23
  119. package/dist/lib/plugin-setup.d.ts.map +0 -1
  120. package/dist/lib/plugin-setup.js +0 -141
  121. package/dist/lib/plugin-setup.js.map +0 -1
  122. package/dist/lib/with-server.d.ts +0 -7
  123. package/dist/lib/with-server.d.ts.map +0 -1
  124. package/dist/lib/with-server.js +0 -28
  125. package/dist/lib/with-server.js.map +0 -1
  126. package/dist/mode.d.ts +0 -10
  127. package/dist/mode.d.ts.map +0 -1
  128. package/dist/mode.js +0 -40
  129. package/dist/mode.js.map +0 -1
  130. package/dist/plugin-files/.claude-plugin/plugin.json +0 -20
  131. package/dist/plugin-files/CLAUDE.md +0 -34
  132. package/dist/plugin-files/dist/command-registry.json +0 -235
  133. package/dist/plugin-files/dist/skills/devflow:context/SKILL.md +0 -49
  134. package/dist/plugin-files/dist/skills/devflow:docker/SKILL.md +0 -67
  135. package/dist/plugin-files/dist/skills/devflow:electron/SKILL.md +0 -67
  136. package/dist/plugin-files/dist/skills/devflow:graph/SKILL.md +0 -42
  137. package/dist/plugin-files/dist/skills/devflow:graphql/SKILL.md +0 -68
  138. package/dist/plugin-files/dist/skills/devflow:knowledge/SKILL.md +0 -42
  139. package/dist/plugin-files/dist/skills/devflow:memory/SKILL.md +0 -41
  140. package/dist/plugin-files/dist/skills/devflow:nest/SKILL.md +0 -68
  141. package/dist/plugin-files/dist/skills/devflow:nextjs/SKILL.md +0 -65
  142. package/dist/plugin-files/dist/skills/devflow:performance/SKILL.md +0 -67
  143. package/dist/plugin-files/dist/skills/devflow:react/SKILL.md +0 -85
  144. package/dist/plugin-files/dist/skills/devflow:tailwind/SKILL.md +0 -63
  145. package/dist/plugin-files/dist/skills/devflow:taro/SKILL.md +0 -66
  146. package/dist/plugin-files/dist/skills/devflow:vue/SKILL.md +0 -74
  147. package/dist/plugin-files/dist/skills/devflow:workflow/SKILL.md +0 -42
  148. package/dist/plugin-files/hooks/constitution.md +0 -20
  149. package/dist/plugin-files/hooks/post-tool-use +0 -16
  150. package/dist/plugin-files/hooks/pre-tool-use +0 -23
  151. package/dist/plugin-files/hooks/session-start +0 -165
  152. package/dist/plugin-files/hooks/stop +0 -32
  153. package/dist/plugin-files/hooks.json +0 -52
  154. package/dist/plugin-files/package.json +0 -31
@@ -1,165 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
-
4
- # Try to get project summary from devflow doctor
5
- SUMMARY=""
6
- DOCTOR_OUTPUT=""
7
-
8
- # Try global devflow first, then npx fallback
9
- if command -v devflow &>/dev/null; then
10
- DOCTOR_OUTPUT=$(devflow doctor --json 2>/dev/null || echo "")
11
- elif command -v npx &>/dev/null; then
12
- DOCTOR_OUTPUT=$(npx --yes @devflow-tools/cli doctor --json 2>/dev/null || echo "")
13
- fi
14
-
15
- if [ -n "$DOCTOR_OUTPUT" ] && echo "$DOCTOR_OUTPUT" | python3 -c "import sys,json; json.load(sys.stdin)" 2>/dev/null; then
16
- PROJECT_NAME=$(echo "$DOCTOR_OUTPUT" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('project',{}).get('name','') or d.get('projectName',''))" 2>/dev/null || echo "")
17
- FILES=$(echo "$DOCTOR_OUTPUT" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('project',{}).get('files', d.get('indexedFiles','?')))" 2>/dev/null || echo "?")
18
- TECH=$(echo "$DOCTOR_OUTPUT" | python3 -c "import sys,json; d=json.load(sys.stdin); s=d.get('project',{}).get('techStack',[]); print(', '.join(s) if s else 'unknown')" 2>/dev/null || echo "unknown")
19
- ENGINES=$(echo "$DOCTOR_OUTPUT" | python3 -c "import sys,json; d=json.load(sys.stdin); e=d.get('engines',{}); print(' '.join([f'{k} {\"✓\" if v else \"✗\"}' for k,v in e.items()]))" 2>/dev/null || echo "")
20
- PLUGINS=$(echo "$DOCTOR_OUTPUT" | python3 -c "import sys,json; d=json.load(sys.stdin); p=d.get('plugins',[]); print(', '.join(p))" 2>/dev/null || echo "")
21
-
22
- SUMMARY="DevFlow 已就绪。项目 ${PROJECT_NAME:-unknown} (${TECH})。${FILES} 个文件已索引。引擎:${ENGINES}。已装插件:${PLUGINS}。使用 /devflow:context 查代码,/devflow:react 获取 React 专家能力。"
23
- else
24
- SUMMARY="DevFlow 插件已加载。如尚未初始化项目,请运行 devflow init。使用 /devflow 查看可用命令。"
25
- fi
26
-
27
- # Generate session token for MCP Gateway authentication
28
- SESSION_TOKEN=""
29
- if command -v devflow &>/dev/null; then
30
- SESSION_TOKEN=$(devflow session token --expires 3600 2>/dev/null || echo "")
31
- elif command -v npx &>/dev/null; then
32
- SESSION_TOKEN=$(npx --yes @devflow-tools/cli session token --expires 3600 2>/dev/null || echo "")
33
- fi
34
-
35
- TOKEN_VALUE=""
36
- if [ -n "$SESSION_TOKEN" ] && echo "$SESSION_TOKEN" | python3 -c "import sys,json; json.load(sys.stdin)" 2>/dev/null; then
37
- TOKEN_VALUE=$(echo "$SESSION_TOKEN" | python3 -c "import sys,json; print(json.load(sys.stdin).get('token',''))" 2>/dev/null || echo "")
38
- fi
39
-
40
- # Clean up stale receipt from previous session
41
- PROJECT_ROOT="${CLAUDE_PROJECT_DIR:-$(pwd)}"
42
- RECEIPT_DIR="${TMPDIR:-/tmp}/.devflow-receipts"
43
- mkdir -p "$RECEIPT_DIR" 2>/dev/null || true
44
- SESSION_ID=$(echo -n "$PROJECT_ROOT" | shasum -a 256 2>/dev/null | cut -c1-16 || echo "default")
45
- RECEIPT_FILE="$RECEIPT_DIR/${SESSION_ID}.json"
46
- OVERRIDE_FILE="$RECEIPT_DIR/${SESSION_ID}.override"
47
- rm -f "$RECEIPT_FILE" "$OVERRIDE_FILE" 2>/dev/null || true
48
-
49
- # ── Clean up stale execution from previous session (if stop hook didn't fire) ──
50
- EXEC_FILE="${HOME}/.devflow/current-execution-id"
51
- SKILL_FILE="${HOME}/.devflow/current-skill.json"
52
- if [ -f "$EXEC_FILE" ]; then
53
- EXEC_ID=$(cat "$EXEC_FILE" 2>/dev/null || echo "")
54
- if [ -n "$EXEC_ID" ]; then
55
- NOW_MS="$(date +%s)000"
56
- python3 -c "
57
- import urllib.request, json
58
- try:
59
- payload = json.dumps({
60
- 'executionId': '${EXEC_ID}',
61
- 'finishedAt': ${NOW_MS},
62
- 'status': 'completed',
63
- 'summary': {
64
- 'totalToolCalls': 0,
65
- 'mcpToolCalls': 0,
66
- 'directToolCalls': 0,
67
- 'subagentCount': 0,
68
- 'totalTokens': 0,
69
- 'totalDuration': 0,
70
- 'mcpComplianceRate': 0
71
- }
72
- }).encode()
73
- req = urllib.request.Request(
74
- 'http://127.0.0.1:13337/api/telemetry/skill-execution/complete',
75
- data=payload,
76
- headers={'Content-Type': 'application/json', 'X-API-Key': 'dev-key-000000'},
77
- method='POST'
78
- )
79
- urllib.request.urlopen(req, timeout=5)
80
- except:
81
- pass
82
- " 2>/dev/null || true
83
- fi
84
- rm -f "$EXEC_FILE" "$SKILL_FILE" 2>/dev/null || true
85
- fi
86
-
87
- # Determine plugin root directory (same way as superpowers)
88
- if [ -z "${CLAUDE_PLUGIN_ROOT:-}" ]; then
89
- SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
90
- PLUGIN_ROOT="$(cd "${SCRIPT_DIR}/../.." && pwd)"
91
- else
92
- PLUGIN_ROOT="$CLAUDE_PLUGIN_ROOT"
93
- fi
94
-
95
- # Read DevFlow Constitution from file (avoids shell escaping issues)
96
- CONSTITUTION_FILE="${PLUGIN_ROOT}/skills/devflow/SKILL.md"
97
- if [ -f "${PLUGIN_ROOT}/hooks/constitution.md" ]; then
98
- CONSTITUTION_FILE="${PLUGIN_ROOT}/hooks/constitution.md"
99
- fi
100
-
101
- if [ -f "$CONSTITUTION_FILE" ]; then
102
- GLOBAL_CONSTRAINT=$(cat "$CONSTITUTION_FILE" 2>/dev/null || echo "DevFlow Constitution 加载失败")
103
- else
104
- GLOBAL_CONSTRAINT="DevFlow Constitution 文件未找到。使用 /devflow: 命令时请优先调用 MCP 工具。"
105
- fi
106
-
107
- # Append Gateway status to summary
108
- GATEWAY_STATUS="\n\n━━━━━━ DevFlow Gateway ━━━━━━\n"
109
- # Check if devflow MCP server is configured (token will be auto-generated by ensureSessionToken)
110
- if [ -f ~/.claude/.mcp.json ] && grep -q '"devflow"' ~/.claude/.mcp.json 2>/dev/null; then
111
- GATEWAY_STATUS="${GATEWAY_STATUS}Status: 🟢 DevFlow MCP 已配置\nGate 层数: 4 (宪法 → 派发 → 拦截 → 纠正)\n"
112
- elif [ -f .mcp.json ] && grep -q '"devflow"' .mcp.json 2>/dev/null; then
113
- GATEWAY_STATUS="${GATEWAY_STATUS}Status: 🟢 DevFlow MCP 已配置(项目级)\nGate 层数: 4 (宪法 → 派发 → 拦截 → 纠正)\n"
114
- else
115
- GATEWAY_STATUS="${GATEWAY_STATUS}Status: 🔴 未配置 DevFlow MCP Server\n请将 devflow MCP 配置加入 .mcp.json\n"
116
- fi
117
- GATEWAY_STATUS="${GATEWAY_STATUS}━━━━━━━━━━━━━━━━━━━━━━━━━━━"
118
-
119
- SUMMARY="${SUMMARY}${GLOBAL_CONSTRAINT}${GATEWAY_STATUS}"
120
-
121
- # Escape for JSON
122
- ESCAPED=$(echo "$SUMMARY" | python3 -c "import sys,json; print(json.dumps(sys.stdin.read()))")
123
-
124
- # Output context injection in Claude Code format
125
- if [ -n "${CLAUDE_PLUGIN_ROOT:-}" ]; then
126
- if [ -n "$TOKEN_VALUE" ]; then
127
- ESCAPED_TOKEN=$(echo "$TOKEN_VALUE" | python3 -c "import sys,json; print(json.dumps(sys.stdin.read()))")
128
- printf '{\n "hookSpecificOutput": {\n "hookEventName": "SessionStart",\n "additionalContext": %s\n },\n "env": {\n "DEVFLOW_SESSION_TOKEN": %s\n }\n}\n' "$ESCAPED" "$ESCAPED_TOKEN"
129
- else
130
- printf '{\n "hookSpecificOutput": {\n "hookEventName": "SessionStart",\n "additionalContext": %s\n }\n}\n' "$ESCAPED"
131
- fi
132
- fi
133
-
134
- # ── Start hook daemon (background, Unix socket) ──
135
- DAEMON_JS="${PLUGIN_ROOT}/dist/hooks/hook-daemon.js"
136
- if [ -f "$DAEMON_JS" ]; then
137
- # Kill any stale daemon from previous session
138
- STALE_PID=$(pgrep -f "hook-daemon.js" 2>/dev/null || true)
139
- if [ -n "$STALE_PID" ]; then
140
- kill "$STALE_PID" 2>/dev/null || true
141
- sleep 0.5
142
- fi
143
- node "$DAEMON_JS" "${CLAUDE_PROJECT_DIR:-$(pwd)}" &
144
- echo "[devflow] Hook daemon started (PID $!)" >&2
145
- fi
146
-
147
- # ── Trigger memory extraction for previous session events (best-effort, async) ──
148
- (python3 -c "
149
- import urllib.request, json, sys
150
- try:
151
- req = urllib.request.Request(
152
- 'http://127.0.0.1:13337/api/memory/process?rootPath=${CLAUDE_PROJECT_DIR:-$(pwd)}',
153
- data=b'{}',
154
- headers={'Content-Type': 'application/json', 'X-API-Key': 'dev-key-000000'},
155
- method='POST',
156
- )
157
- resp = urllib.request.urlopen(req, timeout=30)
158
- result = json.loads(resp.read())
159
- print('DevFlow memory: {} extracted, {} approved, {} pending'.format(
160
- result.get('extracted', 0), result.get('approved', 0), result.get('pending', 0)), file=sys.stderr)
161
- except Exception as e:
162
- print('DevFlow memory extraction skipped: {}'.format(e), file=sys.stderr)
163
- " 2>/dev/null || true) &
164
-
165
- exit 0
@@ -1,32 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
-
4
- # DevFlow Stop Hook — graceful daemon shutdown + cleanup
5
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
6
- PLUGIN_ROOT="${CLAUDE_PLUGIN_ROOT:-$SCRIPT_DIR/..}"
7
-
8
- # 1. Tell daemon to stop via hook-client
9
- CLIENT_JS="$PLUGIN_ROOT/dist/hooks/hook-client.js"
10
- if [ -f "$CLIENT_JS" ]; then
11
- node "$CLIENT_JS" stop </dev/null 2>/dev/null || true
12
- fi
13
-
14
- # 2. Fallback: kill any remaining daemon process
15
- DAEMON_PID=$(pgrep -f "hook-daemon.js" 2>/dev/null || true)
16
- if [ -n "$DAEMON_PID" ]; then
17
- kill "$DAEMON_PID" 2>/dev/null || true
18
- fi
19
-
20
- # 3. Run existing stop.js cleanup (session close, memory extraction)
21
- STOP_JS="$PLUGIN_ROOT/dist/hooks/stop.js"
22
- if [ -f "$STOP_JS" ]; then
23
- node "$STOP_JS" 2>/dev/null || true
24
- fi
25
-
26
- # 4. Clean up stale receipt files for this project
27
- PROJECT_ROOT="${CLAUDE_PROJECT_DIR:-$(pwd)}"
28
- SESSION_ID=$(echo -n "$PROJECT_ROOT" | shasum -a 256 2>/dev/null | cut -c1-16 || echo "")
29
- RECEIPT_FILE="${TMPDIR:-/tmp}/.devflow-receipts/${SESSION_ID}.json"
30
- rm -f "$RECEIPT_FILE" 2>/dev/null || true
31
-
32
- exit 0
@@ -1,52 +0,0 @@
1
- {
2
- "hooks": {
3
- "SessionStart": [
4
- {
5
- "matcher": "",
6
- "hooks": [
7
- {
8
- "type": "command",
9
- "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/session-start\"",
10
- "async": false
11
- }
12
- ]
13
- }
14
- ],
15
- "PreToolUse": [
16
- {
17
- "matcher": "*",
18
- "hooks": [
19
- {
20
- "type": "command",
21
- "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/pre-tool-use\"",
22
- "async": false
23
- }
24
- ]
25
- }
26
- ],
27
- "PostToolUse": [
28
- {
29
- "matcher": "*",
30
- "hooks": [
31
- {
32
- "type": "command",
33
- "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/post-tool-use\"",
34
- "async": false
35
- }
36
- ]
37
- }
38
- ],
39
- "Stop": [
40
- {
41
- "matcher": "",
42
- "hooks": [
43
- {
44
- "type": "command",
45
- "command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/stop\"",
46
- "async": false
47
- }
48
- ]
49
- }
50
- ]
51
- }
52
- }
@@ -1,31 +0,0 @@
1
- {
2
- "name": "@devflow-tools/claude-code-plugin",
3
- "version": "0.12.5",
4
- "description": "DevFlow — Developer Intelligence Platform for Claude Code",
5
- "type": "module",
6
- "scripts": {
7
- "build": "npx tsx scripts/inject-gates.ts",
8
- "deploy": "npx tsx scripts/inject-gates.ts --deploy"
9
- },
10
- "devDependencies": {
11
- "@devflow-tools/mcp-server": "^0.12.5"
12
- },
13
- "keywords": [
14
- "pi-package",
15
- "skills",
16
- "development",
17
- "context",
18
- "knowledge-base"
19
- ],
20
- "pi": {
21
- "skills": [
22
- "./skills"
23
- ]
24
- },
25
- "files": [
26
- "dist",
27
- "hooks",
28
- "hooks.json",
29
- "skills"
30
- ]
31
- }