@shawnstack/quickforge 1.2.10 → 1.3.0
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 +6 -6
- package/bin/quickforge.mjs +1 -1
- package/node_modules/@aws-sdk/client-bedrock-runtime/package.json +7 -7
- package/node_modules/@aws-sdk/core/package.json +2 -2
- package/node_modules/@aws-sdk/credential-provider-env/package.json +2 -2
- package/node_modules/@aws-sdk/credential-provider-http/package.json +2 -2
- package/node_modules/@aws-sdk/credential-provider-ini/package.json +9 -9
- package/node_modules/@aws-sdk/credential-provider-login/package.json +3 -3
- package/node_modules/@aws-sdk/credential-provider-node/package.json +7 -7
- package/node_modules/@aws-sdk/credential-provider-process/package.json +2 -2
- package/node_modules/@aws-sdk/credential-provider-sso/package.json +4 -4
- package/node_modules/@aws-sdk/credential-provider-web-identity/package.json +3 -3
- package/node_modules/@aws-sdk/middleware-user-agent/package.json +2 -2
- package/node_modules/@aws-sdk/middleware-websocket/package.json +2 -2
- package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/index.js +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/index.js +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/index.js +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/index.js +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/index.js +1 -1
- package/node_modules/@aws-sdk/nested-clients/package.json +4 -4
- package/node_modules/@aws-sdk/token-providers/package.json +3 -3
- package/node_modules/@aws-sdk/util-user-agent-node/package.json +2 -2
- package/node_modules/@aws-sdk/xml-builder/package.json +2 -2
- package/node_modules/@types/node/README.md +1 -1
- package/node_modules/@types/node/package.json +3 -3
- package/node_modules/@types/node/sqlite.d.ts +54 -7
- package/node_modules/@types/node/test.d.ts +46 -4
- package/node_modules/@types/node/url.d.ts +4 -2
- package/node_modules/fast-xml-parser/CHANGELOG.md +7 -0
- package/node_modules/fast-xml-parser/README.md +0 -3
- package/node_modules/fast-xml-parser/lib/fxbuilder.min.js +1 -1
- package/node_modules/fast-xml-parser/lib/fxbuilder.min.js.map +1 -1
- package/node_modules/fast-xml-parser/lib/fxp.cjs +1 -1
- package/node_modules/fast-xml-parser/lib/fxp.d.cts +1 -0
- package/node_modules/fast-xml-parser/lib/fxp.min.js +1 -1
- package/node_modules/fast-xml-parser/lib/fxp.min.js.map +1 -1
- package/node_modules/fast-xml-parser/lib/fxparser.min.js +1 -1
- package/node_modules/fast-xml-parser/lib/fxparser.min.js.map +1 -1
- package/node_modules/fast-xml-parser/package.json +2 -4
- package/node_modules/fast-xml-parser/src/fxp.d.ts +1 -0
- package/node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js +1 -1
- package/node_modules/fast-xml-parser/src/xmlparser/node2json.js +4 -0
- package/node_modules/undici-types/connector.d.ts +2 -0
- package/node_modules/undici-types/dispatcher.d.ts +7 -5
- package/node_modules/undici-types/errors.d.ts +17 -1
- package/node_modules/undici-types/index.d.ts +4 -1
- package/node_modules/undici-types/interceptors.d.ts +7 -0
- package/node_modules/undici-types/package.json +1 -1
- package/node_modules/undici-types/socks5-proxy-agent.d.ts +25 -0
- package/package.json +1 -1
- package/server/system-prompt.mjs +5 -0
- package/skills/ai-context-package/SKILL.md +0 -104
- package/skills/ai-context-package/skill.json +0 -9
- package/skills/code-review/SKILL.md +0 -23
- package/skills/code-review/skill.json +0 -9
- package/skills/frontend-react/SKILL.md +0 -22
- package/skills/frontend-react/skill.json +0 -9
- package/skills/quickforge-project/SKILL.md +0 -22
- package/skills/quickforge-project/skill.json +0 -9
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fast-xml-parser",
|
|
3
|
-
"version": "5.7.
|
|
3
|
+
"version": "5.7.3",
|
|
4
4
|
"description": "Validate XML, Parse XML, Build XML without C/C++ based libraries",
|
|
5
5
|
"main": "./lib/fxp.cjs",
|
|
6
6
|
"type": "module",
|
|
@@ -23,7 +23,6 @@
|
|
|
23
23
|
"test": "c8 --reporter=lcov --reporter=text jasmine spec/*spec.js",
|
|
24
24
|
"test-types": "tsc --noEmit spec/typings/typings-test.ts",
|
|
25
25
|
"unit": "jasmine",
|
|
26
|
-
"coverage": "nyc report --reporter html --reporter text -t .nyc_output --report-dir .nyc_output/summary",
|
|
27
26
|
"perf": "node ./benchmark/perfTest3.js",
|
|
28
27
|
"lint": "eslint src/**/*.js spec/**/*.js benchmark/**/*.js",
|
|
29
28
|
"bundle": "webpack --config webpack.cjs.config.js",
|
|
@@ -72,7 +71,6 @@
|
|
|
72
71
|
"babel-loader": "^8.2.2",
|
|
73
72
|
"c8": "^10.1.3",
|
|
74
73
|
"eslint": "^8.3.0",
|
|
75
|
-
"he": "^1.2.0",
|
|
76
74
|
"jasmine": "^5.6.0",
|
|
77
75
|
"prettier": "^3.5.1",
|
|
78
76
|
"publish-please": "^5.5.2",
|
|
@@ -88,7 +86,7 @@
|
|
|
88
86
|
],
|
|
89
87
|
"dependencies": {
|
|
90
88
|
"@nodable/entities": "^2.1.0",
|
|
91
|
-
"fast-xml-builder": "^1.1.
|
|
89
|
+
"fast-xml-builder": "^1.1.7",
|
|
92
90
|
"path-expression-matcher": "^1.5.0",
|
|
93
91
|
"strnum": "^2.2.3"
|
|
94
92
|
}
|
|
@@ -701,6 +701,7 @@ export class XMLParser {
|
|
|
701
701
|
* Add Entity which is not by default supported by this library
|
|
702
702
|
* @param entityIdentifier {string} Eg: 'ent' for &ent;
|
|
703
703
|
* @param entityValue {string} Eg: '\r'
|
|
704
|
+
* @deprecated Use `entityDecoder` instead
|
|
704
705
|
*/
|
|
705
706
|
addEntity(entityIdentifier: string, entityValue: string): void;
|
|
706
707
|
|
|
@@ -776,7 +776,7 @@ function readStopNodeData(xmlData, tagName, i) {
|
|
|
776
776
|
const closeIndex = findClosingIndex(xmlData, "]]>", i, "StopNode is not closed.") - 2;
|
|
777
777
|
i = closeIndex;
|
|
778
778
|
} else {
|
|
779
|
-
const tagData = readTagExp(xmlData, i,
|
|
779
|
+
const tagData = readTagExp(xmlData, i, false)
|
|
780
780
|
|
|
781
781
|
if (tagData) {
|
|
782
782
|
const openTagName = tagData && tagData.tagName;
|
|
@@ -71,6 +71,10 @@ function compress(arr, options, matcher, readonlyMatcher) {
|
|
|
71
71
|
let val = compress(tagObj[property], options, matcher, readonlyMatcher);
|
|
72
72
|
const isLeaf = isLeafTag(val, options);
|
|
73
73
|
|
|
74
|
+
if (Object.keys(val).length === 0 && options.alwaysCreateTextNode) {
|
|
75
|
+
val[options.textNodeName] = "";
|
|
76
|
+
}
|
|
77
|
+
|
|
74
78
|
if (tagObj[":@"]) {
|
|
75
79
|
assignAttributes(val, tagObj[":@"], readonlyMatcher, options);
|
|
76
80
|
} else if (Object.keys(val).length === 1 && val[options.textNodeName] !== undefined && !options.alwaysCreateTextNode) {
|
|
@@ -13,6 +13,7 @@ declare namespace buildConnector {
|
|
|
13
13
|
port?: number;
|
|
14
14
|
keepAlive?: boolean | null;
|
|
15
15
|
keepAliveInitialDelay?: number | null;
|
|
16
|
+
typeOfService?: number | null;
|
|
16
17
|
}
|
|
17
18
|
|
|
18
19
|
export interface Options {
|
|
@@ -22,6 +23,7 @@ declare namespace buildConnector {
|
|
|
22
23
|
port: string
|
|
23
24
|
servername?: string
|
|
24
25
|
localAddress?: string | null
|
|
26
|
+
socketPath?: string | null
|
|
25
27
|
httpSocket?: Socket
|
|
26
28
|
}
|
|
27
29
|
|
|
@@ -96,7 +96,7 @@ declare class Dispatcher extends EventEmitter {
|
|
|
96
96
|
}
|
|
97
97
|
|
|
98
98
|
declare namespace Dispatcher {
|
|
99
|
-
export interface ComposedDispatcher extends Dispatcher {}
|
|
99
|
+
export interface ComposedDispatcher extends Dispatcher { }
|
|
100
100
|
export type Dispatch = Dispatcher['dispatch']
|
|
101
101
|
export type DispatcherComposeInterceptor = (dispatch: Dispatch) => Dispatch
|
|
102
102
|
export interface DispatchOptions {
|
|
@@ -113,6 +113,8 @@ declare namespace Dispatcher {
|
|
|
113
113
|
idempotent?: boolean;
|
|
114
114
|
/** Whether the response is expected to take a long time and would end up blocking the pipeline. When this is set to `true` further pipelining will be avoided on the same connection until headers have been received. Defaults to `method !== 'HEAD'`. */
|
|
115
115
|
blocking?: boolean;
|
|
116
|
+
/** The IP Type of Service (ToS) value for the request socket. Must be an integer between 0 and 255. Default: `0` */
|
|
117
|
+
typeOfService?: number | null;
|
|
116
118
|
/** Upgrade the request. Should be used to specify the kind of upgrade i.e. `'Websocket'`. Default: `method === 'CONNECT' || null`. */
|
|
117
119
|
upgrade?: boolean | string | null;
|
|
118
120
|
/** The amount of time, in milliseconds, the parser will wait to receive the complete HTTP headers. Defaults to 300 seconds. */
|
|
@@ -213,10 +215,10 @@ declare namespace Dispatcher {
|
|
|
213
215
|
export type StreamFactory<TOpaque = null> = (data: StreamFactoryData<TOpaque>) => Writable
|
|
214
216
|
|
|
215
217
|
export interface DispatchController {
|
|
216
|
-
get aborted
|
|
217
|
-
get paused
|
|
218
|
-
get reason
|
|
219
|
-
abort
|
|
218
|
+
get aborted(): boolean
|
|
219
|
+
get paused(): boolean
|
|
220
|
+
get reason(): Error | null
|
|
221
|
+
abort(reason: Error): void
|
|
220
222
|
pause(): void
|
|
221
223
|
resume(): void
|
|
222
224
|
}
|
|
@@ -154,8 +154,24 @@ declare namespace Errors {
|
|
|
154
154
|
code: 'UND_ERR_PRX_TLS'
|
|
155
155
|
}
|
|
156
156
|
|
|
157
|
-
class MaxOriginsReachedError extends UndiciError {
|
|
157
|
+
export class MaxOriginsReachedError extends UndiciError {
|
|
158
158
|
name: 'MaxOriginsReachedError'
|
|
159
159
|
code: 'UND_ERR_MAX_ORIGINS_REACHED'
|
|
160
160
|
}
|
|
161
|
+
|
|
162
|
+
/** SOCKS5 proxy related error. */
|
|
163
|
+
export class Socks5ProxyError extends UndiciError {
|
|
164
|
+
constructor (
|
|
165
|
+
message?: string,
|
|
166
|
+
code?: string
|
|
167
|
+
)
|
|
168
|
+
name: 'Socks5ProxyError'
|
|
169
|
+
code: string
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/** WebSocket decompressed message exceeded maximum size. */
|
|
173
|
+
export class MessageSizeExceededError extends UndiciError {
|
|
174
|
+
name: 'MessageSizeExceededError'
|
|
175
|
+
code: 'UND_ERR_WS_MESSAGE_SIZE_EXCEEDED'
|
|
176
|
+
}
|
|
161
177
|
}
|
|
@@ -18,6 +18,7 @@ import { SnapshotAgent } from './snapshot-agent'
|
|
|
18
18
|
import { MockCallHistory, MockCallHistoryLog } from './mock-call-history'
|
|
19
19
|
import mockErrors from './mock-errors'
|
|
20
20
|
import ProxyAgent from './proxy-agent'
|
|
21
|
+
import Socks5ProxyAgent from './socks5-proxy-agent'
|
|
21
22
|
import EnvHttpProxyAgent from './env-http-proxy-agent'
|
|
22
23
|
import RetryHandler from './retry-handler'
|
|
23
24
|
import RetryAgent from './retry-agent'
|
|
@@ -43,7 +44,7 @@ export { Interceptable } from './mock-interceptor'
|
|
|
43
44
|
|
|
44
45
|
declare function globalThisInstall (): void
|
|
45
46
|
|
|
46
|
-
export { Dispatcher, BalancedPool, RoundRobinPool, Pool, Client, buildConnector, errors, Agent, request, stream, pipeline, connect, upgrade, setGlobalDispatcher, getGlobalDispatcher, setGlobalOrigin, getGlobalOrigin, interceptors, cacheStores, MockClient, MockPool, MockAgent, SnapshotAgent, MockCallHistory, MockCallHistoryLog, mockErrors, ProxyAgent, EnvHttpProxyAgent, RedirectHandler, DecoratorHandler, RetryHandler, RetryAgent, H2CClient, globalThisInstall as install }
|
|
47
|
+
export { Dispatcher, BalancedPool, RoundRobinPool, Pool, Client, buildConnector, errors, Agent, request, stream, pipeline, connect, upgrade, setGlobalDispatcher, getGlobalDispatcher, setGlobalOrigin, getGlobalOrigin, interceptors, cacheStores, MockClient, MockPool, MockAgent, SnapshotAgent, MockCallHistory, MockCallHistoryLog, mockErrors, ProxyAgent, Socks5ProxyAgent, EnvHttpProxyAgent, RedirectHandler, DecoratorHandler, RetryHandler, RetryAgent, H2CClient, globalThisInstall as install }
|
|
47
48
|
export default Undici
|
|
48
49
|
|
|
49
50
|
declare namespace Undici {
|
|
@@ -73,6 +74,8 @@ declare namespace Undici {
|
|
|
73
74
|
const MockCallHistory: typeof import('./mock-call-history').MockCallHistory
|
|
74
75
|
const MockCallHistoryLog: typeof import('./mock-call-history').MockCallHistoryLog
|
|
75
76
|
const mockErrors: typeof import('./mock-errors').default
|
|
77
|
+
const ProxyAgent: typeof import('./proxy-agent').default
|
|
78
|
+
const Socks5ProxyAgent: typeof import('./socks5-proxy-agent').default
|
|
76
79
|
const fetch: typeof import('./fetch').fetch
|
|
77
80
|
const Headers: typeof import('./fetch').Headers
|
|
78
81
|
const Response: typeof import('./fetch').Response
|
|
@@ -60,6 +60,13 @@ declare namespace Interceptors {
|
|
|
60
60
|
* @default []
|
|
61
61
|
*/
|
|
62
62
|
excludeHeaderNames?: string[]
|
|
63
|
+
/**
|
|
64
|
+
* Maximum bytes buffered per paused waiting deduplicated handler.
|
|
65
|
+
* If a waiting handler remains paused and exceeds this threshold,
|
|
66
|
+
* it is failed with an abort error to prevent unbounded memory growth.
|
|
67
|
+
* @default 5 * 1024 * 1024
|
|
68
|
+
*/
|
|
69
|
+
maxBufferSize?: number
|
|
63
70
|
}
|
|
64
71
|
|
|
65
72
|
export function dump (opts?: DumpInterceptorOpts): Dispatcher.DispatcherComposeInterceptor
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import Dispatcher from './dispatcher'
|
|
2
|
+
import buildConnector from './connector'
|
|
3
|
+
import { IncomingHttpHeaders } from './header'
|
|
4
|
+
import Pool from './pool'
|
|
5
|
+
|
|
6
|
+
export default Socks5ProxyAgent
|
|
7
|
+
|
|
8
|
+
declare class Socks5ProxyAgent extends Dispatcher {
|
|
9
|
+
constructor (proxyUrl: string | URL, options?: Socks5ProxyAgent.Options)
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
declare namespace Socks5ProxyAgent {
|
|
13
|
+
export interface Options extends Pool.Options {
|
|
14
|
+
/** Additional headers to send with the proxy connection */
|
|
15
|
+
headers?: IncomingHttpHeaders;
|
|
16
|
+
/** SOCKS5 proxy username for authentication */
|
|
17
|
+
username?: string;
|
|
18
|
+
/** SOCKS5 proxy password for authentication */
|
|
19
|
+
password?: string;
|
|
20
|
+
/** Custom connector function for proxy connection */
|
|
21
|
+
connect?: buildConnector.connector;
|
|
22
|
+
/** TLS options for the proxy connection (for SOCKS5 over TLS) */
|
|
23
|
+
proxyTls?: buildConnector.BuildOptions;
|
|
24
|
+
}
|
|
25
|
+
}
|
package/package.json
CHANGED
package/server/system-prompt.mjs
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
export const BASE_SYSTEM_PROMPT = `You are a pragmatic coding assistant.
|
|
2
2
|
|
|
3
3
|
For project tasks:
|
|
4
|
+
- Do not assume requirements. If ambiguous, state assumptions or ask.
|
|
5
|
+
- Prefer the simplest solution that satisfies the request.
|
|
6
|
+
- Make surgical changes only. Do not refactor unrelated code.
|
|
7
|
+
- Match existing style.
|
|
8
|
+
- For multi-step work, use a brief plan.
|
|
4
9
|
- Inspect the workspace before changing files.
|
|
5
10
|
- Make minimal, focused changes.
|
|
6
11
|
- Prefer dedicated workspace tools for reading, editing, and searching files.
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: ai-context-package
|
|
3
|
-
description: Use this skill when the user wants to prepare, fill, review, or enforce an AI task context package before coding, including task scope, constraints, validation commands, stop conditions, and expected output format.
|
|
4
|
-
metadata:
|
|
5
|
-
displayName: AI Context Package
|
|
6
|
-
version: "1.0.0"
|
|
7
|
-
tags: context, planning, template
|
|
8
|
-
---
|
|
9
|
-
# AI Context Package Skill
|
|
10
|
-
|
|
11
|
-
## Purpose
|
|
12
|
-
|
|
13
|
-
Produce a clear, bounded context package that helps an AI coding assistant understand the project, task goal, accepted scope, constraints, validation commands, and expected delivery format.
|
|
14
|
-
|
|
15
|
-
## Template
|
|
16
|
-
|
|
17
|
-
```md
|
|
18
|
-
# AI 上下文包:{TASK_NAME}
|
|
19
|
-
|
|
20
|
-
## 1. 项目概况
|
|
21
|
-
- 项目名称:{PROJECT_NAME}
|
|
22
|
-
- 项目定位:{PROJECT_SUMMARY}
|
|
23
|
-
- 技术栈:{TECH_STACK}
|
|
24
|
-
- 当前环境:{ENV}
|
|
25
|
-
|
|
26
|
-
## 2. 相关文档
|
|
27
|
-
- 项目知识地图:{PROJECT_KNOWLEDGE_DOC_PATH}
|
|
28
|
-
- 技术栈学习地图:{TECH_STACK_DOC_PATH}
|
|
29
|
-
- 模块设计文档:{MODULE_DOC_PATH}
|
|
30
|
-
- 解决方案文档:{SOLUTION_DOC_PATH}
|
|
31
|
-
- 接口文档/产品文档:{REQUIREMENT_DOC_PATH}
|
|
32
|
-
|
|
33
|
-
## 3. 任务目标
|
|
34
|
-
{BUSINESS_GOAL}
|
|
35
|
-
|
|
36
|
-
## 4. 验收标准
|
|
37
|
-
{ACCEPTANCE_CRITERIA}
|
|
38
|
-
|
|
39
|
-
## 5. 变更范围
|
|
40
|
-
允许修改:
|
|
41
|
-
{ALLOWED_FILES_OR_MODULES}
|
|
42
|
-
|
|
43
|
-
禁止修改:
|
|
44
|
-
{FORBIDDEN_FILES_OR_MODULES}
|
|
45
|
-
|
|
46
|
-
## 6. 相关代码入口
|
|
47
|
-
| 类型 | 路径 | 说明 |
|
|
48
|
-
|---|---|---|
|
|
49
|
-
| 入口/API | | |
|
|
50
|
-
| Service | | |
|
|
51
|
-
| DAO/Repository | | |
|
|
52
|
-
| 配置 | | |
|
|
53
|
-
| 测试 | | |
|
|
54
|
-
|
|
55
|
-
## 7. 已确定方案
|
|
56
|
-
{SOLUTION_SUMMARY}
|
|
57
|
-
|
|
58
|
-
## 8. 约束条件
|
|
59
|
-
- 不做无关重构。
|
|
60
|
-
- 不引入新依赖,除非明确说明。
|
|
61
|
-
- 不改变公共接口契约,除非有兼容方案。
|
|
62
|
-
- 不修改数据库结构,除非有迁移和回滚。
|
|
63
|
-
- 不泄露密钥和敏感数据。
|
|
64
|
-
- {OTHER_CONSTRAINTS}
|
|
65
|
-
|
|
66
|
-
## 9. 验证方式
|
|
67
|
-
- 测试命令:{TEST_COMMAND}
|
|
68
|
-
- 构建命令:{BUILD_COMMAND}
|
|
69
|
-
- 手工验证步骤:{MANUAL_VALIDATION}
|
|
70
|
-
|
|
71
|
-
## 10. 停止条件
|
|
72
|
-
遇到以下情况先停止,不要继续改代码:
|
|
73
|
-
- 代码事实与方案文档冲突。
|
|
74
|
-
- 需要扩大修改范围。
|
|
75
|
-
- 涉及数据库破坏性变更。
|
|
76
|
-
- 涉及权限扩大或敏感数据。
|
|
77
|
-
- 测试命令不可用且无法判断影响。
|
|
78
|
-
- {OTHER_STOP_CONDITIONS}
|
|
79
|
-
|
|
80
|
-
## 11. 期望 AI 输出
|
|
81
|
-
- 修改前理解。
|
|
82
|
-
- 修改文件清单。
|
|
83
|
-
- 每个文件变更说明。
|
|
84
|
-
- 测试/构建结果。
|
|
85
|
-
- 风险点。
|
|
86
|
-
- 回滚方式。
|
|
87
|
-
- 未完成项。
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
## Workflow
|
|
91
|
-
|
|
92
|
-
1. If the user provides only the template, treat it as a reusable task-context skill/template.
|
|
93
|
-
2. If fields are missing, ask only for the fields needed to proceed, or fill safe placeholders like `待补充` when the user wants a draft.
|
|
94
|
-
3. Before coding, restate the task understanding and explicitly list allowed and forbidden change scope.
|
|
95
|
-
4. Inspect the relevant docs/code entries before changing files.
|
|
96
|
-
5. Stop and ask for confirmation when any stop condition is met.
|
|
97
|
-
6. After changes, report using the expected AI output sections.
|
|
98
|
-
|
|
99
|
-
## Output Rules
|
|
100
|
-
|
|
101
|
-
- Keep the context package structured and copyable as Markdown.
|
|
102
|
-
- Do not invent requirements. Mark unknown values as `待补充`.
|
|
103
|
-
- Prefer concrete file/module paths over broad descriptions.
|
|
104
|
-
- Keep validation commands explicit.
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "ai-context-package",
|
|
3
|
-
"displayName": "AI Context Package",
|
|
4
|
-
"description": "Create a structured task context package for AI coding work, including goals, docs, scope, constraints, validation, and expected output.",
|
|
5
|
-
"version": "1.0.0",
|
|
6
|
-
"tags": ["context", "planning", "task", "requirements", "ai"],
|
|
7
|
-
"triggers": ["上下文包", "AI 上下文", "context package", "任务上下文", "验收标准", "变更范围"],
|
|
8
|
-
"entry": "SKILL.md"
|
|
9
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: code-review
|
|
3
|
-
description: Use this skill when the user asks for code review, PR review, bug finding, quality checks, security/performance/maintainability review, or wants feedback on code changes.
|
|
4
|
-
metadata:
|
|
5
|
-
displayName: Code Review
|
|
6
|
-
version: "1.0.0"
|
|
7
|
-
tags: code, review, quality
|
|
8
|
-
---
|
|
9
|
-
# Code Review Skill
|
|
10
|
-
|
|
11
|
-
## Workflow
|
|
12
|
-
|
|
13
|
-
1. Understand the requested change and inspect the relevant files before judging.
|
|
14
|
-
2. Focus on correctness, regressions, security, data loss, performance, and maintainability.
|
|
15
|
-
3. Prefer concrete findings over generic advice.
|
|
16
|
-
4. If proposing changes, keep them small and directly related to the review.
|
|
17
|
-
5. Verify with targeted tests, lint, typecheck, build, or a focused command when practical.
|
|
18
|
-
|
|
19
|
-
## Output
|
|
20
|
-
|
|
21
|
-
- Start with the highest-risk findings.
|
|
22
|
-
- For each finding include the file/location, risk, why it matters, and a concise fix.
|
|
23
|
-
- If no major issues are found, say so clearly and mention any checks performed.
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "code-review",
|
|
3
|
-
"displayName": "Code Review",
|
|
4
|
-
"description": "Review code changes for correctness, bugs, security, performance, and maintainability.",
|
|
5
|
-
"version": "1.0.0",
|
|
6
|
-
"tags": ["code", "review", "quality"],
|
|
7
|
-
"triggers": ["code review", "review code", "pr review", "代码审查", "检查代码"],
|
|
8
|
-
"entry": "SKILL.md"
|
|
9
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: frontend-react
|
|
3
|
-
description: Use this skill for React, TypeScript, frontend UI, layout, component work, accessibility, styling, or browser interaction changes.
|
|
4
|
-
metadata:
|
|
5
|
-
displayName: React Frontend
|
|
6
|
-
version: "1.0.0"
|
|
7
|
-
tags: react, frontend, typescript, ui
|
|
8
|
-
---
|
|
9
|
-
# React Frontend Skill
|
|
10
|
-
|
|
11
|
-
## Guidelines
|
|
12
|
-
|
|
13
|
-
- Match the existing component style and design language.
|
|
14
|
-
- Prefer simple controlled state and small components over broad rewrites.
|
|
15
|
-
- Keep accessibility in mind: labels, aria attributes, keyboard escape/submit behavior, and focus states.
|
|
16
|
-
- Preserve existing behavior unless the user explicitly asks to change it.
|
|
17
|
-
- Avoid adding new dependencies for basic UI interactions.
|
|
18
|
-
- After changes, run typecheck/build or the smallest relevant verification command.
|
|
19
|
-
|
|
20
|
-
## Output
|
|
21
|
-
|
|
22
|
-
Briefly summarize what changed and what verification was run.
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "frontend-react",
|
|
3
|
-
"displayName": "React Frontend",
|
|
4
|
-
"description": "Build and modify React UI with TypeScript, accessible interactions, and minimal focused changes.",
|
|
5
|
-
"version": "1.0.0",
|
|
6
|
-
"tags": ["react", "frontend", "typescript", "ui"],
|
|
7
|
-
"triggers": ["react", "frontend", "ui", "组件", "前端", "界面"],
|
|
8
|
-
"entry": "SKILL.md"
|
|
9
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: quickforge-project
|
|
3
|
-
description: Use this skill when modifying the QuickForge application, including its React/Vite frontend, local Node.js backend, storage, project chats, workspace tools, skills, or local-only safety behavior.
|
|
4
|
-
metadata:
|
|
5
|
-
displayName: QuickForge Project
|
|
6
|
-
version: "1.0.0"
|
|
7
|
-
tags: quickforge, project, local-agent
|
|
8
|
-
---
|
|
9
|
-
# QuickForge Project Skill
|
|
10
|
-
|
|
11
|
-
## Project Rules
|
|
12
|
-
|
|
13
|
-
- Make surgical changes only; avoid broad refactors.
|
|
14
|
-
- Keep server API changes small and local to `server/routes` or dedicated modules.
|
|
15
|
-
- Keep frontend state changes explicit and close to the component/hook that owns them.
|
|
16
|
-
- Preserve local-only safety assumptions for workspace access.
|
|
17
|
-
- For project-scoped features, persist configuration in the project config where possible.
|
|
18
|
-
- Verify with `npm run build` or a targeted command before finishing.
|
|
19
|
-
|
|
20
|
-
## Notes
|
|
21
|
-
|
|
22
|
-
QuickForge has a React/Vite frontend and a local Node.js backend. Project chats can use workspace tools when YOLO mode is enabled.
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "quickforge-project",
|
|
3
|
-
"displayName": "QuickForge Project",
|
|
4
|
-
"description": "Work within QuickForge conventions: local server, project chats, YOLO workspace tools, and minimal surgical changes.",
|
|
5
|
-
"version": "1.0.0",
|
|
6
|
-
"tags": ["quickforge", "project", "workspace"],
|
|
7
|
-
"triggers": ["quickforge", "项目", "本项目"],
|
|
8
|
-
"entry": "SKILL.md"
|
|
9
|
-
}
|