@aramassa/ai-rules 0.1.1-npmjs.20250910072942
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-npmjs.md +37 -0
- package/README.md +37 -0
- package/artifact/chatmodes/Instruction Improve.md +142 -0
- package/artifact/chatmodes/Planning.md +173 -0
- package/artifact/instructions/git-rules.md +68 -0
- package/artifact/instructions/package-management.md +113 -0
- package/artifact/instructions/planning.md +54 -0
- package/artifact/instructions/python/workspace-management.md +673 -0
- package/artifact/instructions/python-cli.md +261 -0
- package/artifact/instructions/retrospective.md +32 -0
- package/artifact/instructions/rules/coding/nodejs.md +299 -0
- package/artifact/instructions/rules/coding/openai.md +39 -0
- package/artifact/instructions/rules/coding/typescript.md +92 -0
- package/artifact/instructions/rules/development/ansible.md +258 -0
- package/artifact/instructions/rules/development/code-quality-tools.md +181 -0
- package/artifact/instructions/rules/development/github.md +140 -0
- package/artifact/instructions/rules/development/npm-publish.md +108 -0
- package/artifact/instructions/rules/development/typescript-rollup-build.md +249 -0
- package/artifact/instructions/rules/development/typescript.md +46 -0
- package/artifact/instructions/rules/documentation/common.md +16 -0
- package/artifact/instructions/rules/documentation/docs-ai-external.md +12 -0
- package/artifact/instructions/rules/documentation/docs-ai-history.md +46 -0
- package/artifact/instructions/rules/documentation/docs-ai-internal.md +70 -0
- package/artifact/instructions/rules/documentation/docs-ai-learning.md +53 -0
- package/artifact/instructions/rules/documentation/docs.md +41 -0
- package/artifact/instructions/rules/documentation/github-protection.md +122 -0
- package/artifact/instructions/rules/test/e2e-bdd.md +31 -0
- package/artifact/instructions/rules/test/nodejs-test-restrictions.md +101 -0
- package/artifact/instructions/rules/test/timeout-configuration-typescript.md +67 -0
- package/artifact/instructions/rules/test/timeout-configuration.md +89 -0
- package/artifact/instructions/skel/common/change_plans/.gitkeep +0 -0
- package/artifact/instructions/skel/common/docs/.gitkeep +0 -0
- package/artifact/instructions/skel/common/docs_ai/.gitkeep +0 -0
- package/artifact/instructions/skel/common/skel/.gitkeep +0 -0
- package/artifact/instructions/skel/common/todo_plans/.gitkeep +0 -0
- package/artifact/instructions/skel/typescript/tsconfig.build.json +17 -0
- package/artifact/instructions/skel/typescript/tsconfig.json +117 -0
- package/artifact/instructions/skel/typescript/tsdoc.json +4 -0
- package/artifact/instructions/skel.md +88 -0
- package/artifact/instructions/todo_planning.md +25 -0
- package/artifact/instructions/tyding-up.md +30 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +10934 -0
- package/dist/filter.d.ts +8 -0
- package/dist/filter.d.ts.map +1 -0
- package/dist/filter.js +72 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1 -0
- package/dist/optionValidator.d.ts +28 -0
- package/dist/optionValidator.d.ts.map +1 -0
- package/dist/optionValidator.js +29 -0
- package/dist/templateEngine.d.ts +55 -0
- package/dist/templateEngine.d.ts.map +1 -0
- package/dist/templateEngine.js +124 -0
- package/dist/utils/objectUtils.d.ts +11 -0
- package/dist/utils/objectUtils.d.ts.map +1 -0
- package/dist/utils/objectUtils.js +17 -0
- package/dist/utils/test/structureExtractors.d.ts +30 -0
- package/dist/utils/test/structureExtractors.d.ts.map +1 -0
- package/dist/utils/test/structureExtractors.js +164 -0
- package/dist/variableResolver.d.ts +68 -0
- package/dist/variableResolver.d.ts.map +1 -0
- package/dist/variableResolver.js +190 -0
- package/package.json +69 -0
- package/presets/README.md +109 -0
- package/presets/basic.yaml +14 -0
- package/presets/chatmodes.yaml +64 -0
- package/presets/docs-ai.yaml +7 -0
- package/presets/infrastructure-ansible.yaml +19 -0
- package/presets/typescript.yaml +16 -0
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import fs from "fs/promises";
|
|
2
|
+
import path from "path";
|
|
3
|
+
/**
|
|
4
|
+
* Variable resolver that handles collecting variables from multiple sources
|
|
5
|
+
* with proper priority order: CLI > recipe > .env > environment variables
|
|
6
|
+
*/
|
|
7
|
+
export class VariableResolver {
|
|
8
|
+
/**
|
|
9
|
+
* Resolve variables from multiple sources according to priority
|
|
10
|
+
* @param options Resolution options specifying sources
|
|
11
|
+
* @returns Merged variables with proper priority
|
|
12
|
+
*/
|
|
13
|
+
async resolveVariables(options) {
|
|
14
|
+
const sources = [];
|
|
15
|
+
// Lowest priority: environment variables
|
|
16
|
+
if (options.environmentVariables !== false) {
|
|
17
|
+
sources.push(this.getEnvironmentVariables());
|
|
18
|
+
}
|
|
19
|
+
// .env file variables
|
|
20
|
+
if (options.envFile) {
|
|
21
|
+
try {
|
|
22
|
+
const envVars = await this.loadEnvFile(options.envFile);
|
|
23
|
+
sources.push(envVars);
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
throw new Error(`Failed to load .env file '${options.envFile}': ${error instanceof Error ? error.message : String(error)}`);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
// Recipe variables
|
|
30
|
+
if (options.recipeVariables) {
|
|
31
|
+
sources.push(options.recipeVariables);
|
|
32
|
+
}
|
|
33
|
+
// Highest priority: CLI variables
|
|
34
|
+
if (options.cliVariables) {
|
|
35
|
+
sources.push(options.cliVariables);
|
|
36
|
+
}
|
|
37
|
+
return this.mergeVariables(...sources);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Load variables from .env file
|
|
41
|
+
* @param filePath Path to .env file
|
|
42
|
+
* @returns Variables loaded from file
|
|
43
|
+
*/
|
|
44
|
+
async loadEnvFile(filePath) {
|
|
45
|
+
const absolutePath = path.resolve(filePath);
|
|
46
|
+
try {
|
|
47
|
+
await fs.access(absolutePath);
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
throw new Error(`File not found: ${absolutePath}`);
|
|
51
|
+
}
|
|
52
|
+
const content = await fs.readFile(absolutePath, "utf-8");
|
|
53
|
+
return this.parseEnvContent(content);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Parse .env file content into variables object
|
|
57
|
+
* @param content .env file content
|
|
58
|
+
* @returns Parsed variables
|
|
59
|
+
*/
|
|
60
|
+
parseEnvContent(content) {
|
|
61
|
+
const variables = {};
|
|
62
|
+
const lines = content.split('\n');
|
|
63
|
+
for (let i = 0; i < lines.length; i++) {
|
|
64
|
+
const line = lines[i].trim();
|
|
65
|
+
// Skip empty lines and comments
|
|
66
|
+
if (!line || line.startsWith('#')) {
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
// Parse KEY=value format
|
|
70
|
+
const match = line.match(/^([A-Z_][A-Z0-9_]*)=(.*)$/);
|
|
71
|
+
if (match) {
|
|
72
|
+
const [, key, value] = match;
|
|
73
|
+
// Remove surrounding quotes if present
|
|
74
|
+
variables[key] = this.unquoteValue(value);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return variables;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Remove surrounding quotes from environment variable values
|
|
81
|
+
* @param value Value to unquote
|
|
82
|
+
* @returns Unquoted value
|
|
83
|
+
*/
|
|
84
|
+
unquoteValue(value) {
|
|
85
|
+
const trimmed = value.trim();
|
|
86
|
+
// Remove single or double quotes if they wrap the entire value
|
|
87
|
+
if ((trimmed.startsWith('"') && trimmed.endsWith('"')) ||
|
|
88
|
+
(trimmed.startsWith("'") && trimmed.endsWith("'"))) {
|
|
89
|
+
return trimmed.slice(1, -1);
|
|
90
|
+
}
|
|
91
|
+
return trimmed;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Get relevant environment variables (those that match template variable naming convention)
|
|
95
|
+
* @returns Environment variables that could be used as template variables
|
|
96
|
+
*/
|
|
97
|
+
getEnvironmentVariables() {
|
|
98
|
+
const variables = {};
|
|
99
|
+
// System/CI environment variables to exclude from template variable display
|
|
100
|
+
const excludedPrefixes = [
|
|
101
|
+
'GITHUB_', 'RUNNER_', 'ACTIONS_', 'CI_', 'DEBIAN_', 'LANG', 'LC_', 'PWD', 'OLDPWD',
|
|
102
|
+
'SHELL', 'TERM', 'USER', 'HOME', 'LOGNAME', 'MAIL', 'PATH', 'PS1', 'PS2', 'PS4',
|
|
103
|
+
'TMPDIR', 'TMP', 'TEMP', 'HOSTNAME', 'HOSTTYPE', 'MACHTYPE', 'OSTYPE', 'DISPLAY',
|
|
104
|
+
'XDG_', 'DBUS_', 'SESSION_', 'DESKTOP_', 'GTK_', 'QT_', 'KDE_', 'GNOME_', 'WAYLAND_',
|
|
105
|
+
'SSH_', 'GPG_', 'EDITOR', 'VISUAL', 'PAGER', 'BROWSER', 'MANPATH', 'INFOPATH',
|
|
106
|
+
'DEBIAN_FRONTEND', 'APT_', 'DPKG_', 'DEB_', 'COLORTERM', 'INVOCATION_ID',
|
|
107
|
+
'JOURNAL_STREAM', 'SYSTEMD_', 'NODE_', 'NPM_', 'YARN_', 'PNPM_', 'COPILOT_',
|
|
108
|
+
'AGENT_', 'ANDROID_', 'ANT_', 'AZURE_', 'BLACKBIRD_', 'BOOTSTRAP_', 'CAROOT',
|
|
109
|
+
'CHROME_', 'CHROMEWEBDRIVER', 'CONDA', 'CPD_', 'CURL_', 'DOTNET_', 'EDGEWEBDRIVER',
|
|
110
|
+
'ENABLE_', 'FIREWALL_', 'FORCE_', 'GECKOWEBDRIVER', 'GHCUP_', 'GOROOT_', 'GRADLE_',
|
|
111
|
+
'INIT_', 'JAVA_', 'MEMORY_', 'NVM_', 'PIPX_', 'POWERSHELL_', 'REQUESTS_', 'SELENIUM_',
|
|
112
|
+
'SGX_', 'SSL_', 'SUDO_', 'SWIFT_', 'TINYPOOL_', 'VCPKG_', 'VITEST_', 'ACCEPT_',
|
|
113
|
+
'BASE_'
|
|
114
|
+
];
|
|
115
|
+
const excludedExact = [
|
|
116
|
+
'CI', 'SHLVL', '_', 'COLOR', 'DEV', 'MODE', 'PROD', 'SSR', 'VITEST'
|
|
117
|
+
];
|
|
118
|
+
// Only include environment variables that match the template variable naming pattern
|
|
119
|
+
// and don't appear to be system variables
|
|
120
|
+
for (const [key, value] of Object.entries(process.env)) {
|
|
121
|
+
if (/^[A-Z_][A-Z0-9_]*$/.test(key) && value !== undefined) {
|
|
122
|
+
// Skip if it matches any excluded prefix or exact name
|
|
123
|
+
const shouldExclude = excludedPrefixes.some(prefix => key.startsWith(prefix)) ||
|
|
124
|
+
excludedExact.includes(key);
|
|
125
|
+
if (!shouldExclude) {
|
|
126
|
+
variables[key] = value;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return variables;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Merge variables from multiple sources with later sources taking precedence
|
|
134
|
+
* @param sources Variable objects in order of precedence (lowest to highest)
|
|
135
|
+
* @returns Merged variables object
|
|
136
|
+
*/
|
|
137
|
+
mergeVariables(...sources) {
|
|
138
|
+
return Object.assign({}, ...sources);
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Parse CLI variables string in key=value format
|
|
142
|
+
* @param varsString Comma-separated key=value pairs
|
|
143
|
+
* @returns Parsed variables object
|
|
144
|
+
*/
|
|
145
|
+
static parseCliVariables(varsString) {
|
|
146
|
+
const variables = {};
|
|
147
|
+
if (!varsString.trim()) {
|
|
148
|
+
return variables;
|
|
149
|
+
}
|
|
150
|
+
const pairs = varsString.split(',');
|
|
151
|
+
for (const pair of pairs) {
|
|
152
|
+
const trimmed = pair.trim();
|
|
153
|
+
if (!trimmed)
|
|
154
|
+
continue;
|
|
155
|
+
const equalIndex = trimmed.indexOf('=');
|
|
156
|
+
if (equalIndex === -1) {
|
|
157
|
+
throw new Error(`Invalid variable format: '${trimmed}'. Expected 'KEY=value' format.`);
|
|
158
|
+
}
|
|
159
|
+
const key = trimmed.substring(0, equalIndex).trim();
|
|
160
|
+
const value = trimmed.substring(equalIndex + 1).trim();
|
|
161
|
+
// Validate key format
|
|
162
|
+
if (!/^[A-Z_][A-Z0-9_]*$/.test(key)) {
|
|
163
|
+
throw new Error(`Invalid variable name: '${key}'. Variable names must start with a letter or underscore and contain only uppercase letters, numbers, and underscores.`);
|
|
164
|
+
}
|
|
165
|
+
variables[key] = value;
|
|
166
|
+
}
|
|
167
|
+
return variables;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Get variables by source for display purposes
|
|
171
|
+
* @param options Options specifying which sources to check
|
|
172
|
+
* @returns Object with variables grouped by source
|
|
173
|
+
*/
|
|
174
|
+
async getVariablesBySource(options) {
|
|
175
|
+
const result = {
|
|
176
|
+
environment: this.getEnvironmentVariables(),
|
|
177
|
+
envFile: {}
|
|
178
|
+
};
|
|
179
|
+
if (options.envFile) {
|
|
180
|
+
try {
|
|
181
|
+
result.envFile = await this.loadEnvFile(options.envFile);
|
|
182
|
+
}
|
|
183
|
+
catch {
|
|
184
|
+
// Silently ignore .env file errors for display purposes
|
|
185
|
+
result.envFile = {};
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
return result;
|
|
189
|
+
}
|
|
190
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@aramassa/ai-rules",
|
|
3
|
+
"version": "0.1.1-npmjs.20250910072942",
|
|
4
|
+
"description": "This repository collects guidelines and instructions for developing AI agents. It contains documents covering communication rules, coding standards, testing strategies, and general operational practices.",
|
|
5
|
+
"workspaces": [
|
|
6
|
+
"packages/extract",
|
|
7
|
+
"packages/core"
|
|
8
|
+
],
|
|
9
|
+
"main": "index.js",
|
|
10
|
+
"bin": {
|
|
11
|
+
"ai-rules": "dist/cli.js"
|
|
12
|
+
},
|
|
13
|
+
"files": [
|
|
14
|
+
"dist/",
|
|
15
|
+
"artifact/",
|
|
16
|
+
"presets/",
|
|
17
|
+
"README-npmjs.md"
|
|
18
|
+
],
|
|
19
|
+
"publishConfig": {
|
|
20
|
+
"access": "public",
|
|
21
|
+
"registry": "https://registry.npmjs.org/"
|
|
22
|
+
},
|
|
23
|
+
"scripts": {
|
|
24
|
+
"start:cli": "node dist/cli.js",
|
|
25
|
+
"start:dev:cli": "tsx src/cli.ts",
|
|
26
|
+
"test": "vitest run --environment node test",
|
|
27
|
+
"test:all": "npm run test --workspaces",
|
|
28
|
+
"build": "npm run --ws build && tsc -p tsconfig.build.json",
|
|
29
|
+
"build:pkg:clean": "npm run --ws clean",
|
|
30
|
+
"clean": "npm run build:pkg:clean && rm -rf dist",
|
|
31
|
+
"root:build": "npm run build && if [ \"$NODE_ENV\" != \"test\" ]; then rollup -c && chmod +x dist/cli.js; fi"
|
|
32
|
+
},
|
|
33
|
+
"prepublishOnly": "npm run root:build",
|
|
34
|
+
"repository": {
|
|
35
|
+
"type": "git",
|
|
36
|
+
"url": "git+https://github.com/Aramassa/ai-rules.git"
|
|
37
|
+
},
|
|
38
|
+
"keywords": [],
|
|
39
|
+
"author": "",
|
|
40
|
+
"license": "ISC",
|
|
41
|
+
"type": "module",
|
|
42
|
+
"bugs": {
|
|
43
|
+
"url": "https://github.com/Aramassa/ai-rules/issues"
|
|
44
|
+
},
|
|
45
|
+
"homepage": "https://github.com/Aramassa/ai-rules#readme",
|
|
46
|
+
"devDependencies": {
|
|
47
|
+
"@aramassa/skel-extractor": "^0.0.1",
|
|
48
|
+
"@rollup/plugin-alias": "^5.1.1",
|
|
49
|
+
"@rollup/plugin-commonjs": "^28.0.6",
|
|
50
|
+
"@rollup/plugin-json": "^6.1.0",
|
|
51
|
+
"@rollup/plugin-node-resolve": "^16.0.1",
|
|
52
|
+
"@rollup/plugin-typescript": "^12.1.4",
|
|
53
|
+
"@types/commander": "^2.12.0",
|
|
54
|
+
"@types/node": "^24.3.0",
|
|
55
|
+
"fast-glob": "^3.3.3",
|
|
56
|
+
"gray-matter": "^4.0.3",
|
|
57
|
+
"rollup": "^4.45.0",
|
|
58
|
+
"ts-node": "^10.9.2",
|
|
59
|
+
"tslib": "^2.8.1",
|
|
60
|
+
"tsx": "^4.20.3",
|
|
61
|
+
"typescript": "^5.9.2",
|
|
62
|
+
"vitest": "^3.2.4"
|
|
63
|
+
},
|
|
64
|
+
"dependencies": {
|
|
65
|
+
"commander": "^14.0.0",
|
|
66
|
+
"glob": "^11.0.3",
|
|
67
|
+
"yaml": "^2.8.0"
|
|
68
|
+
}
|
|
69
|
+
}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# Presets
|
|
2
|
+
|
|
3
|
+
このディレクトリには、プロジェクトタイプ別の事前定義されたrecipeファイルが含まれています。
|
|
4
|
+
|
|
5
|
+
## 利用可能なプリセット
|
|
6
|
+
|
|
7
|
+
### `basic.yaml`
|
|
8
|
+
|
|
9
|
+
すべてのプロジェクトタイプで共通して必要となる基本的なinstruction構成です。
|
|
10
|
+
|
|
11
|
+
**含まれる内容:**
|
|
12
|
+
|
|
13
|
+
- Communication Rules
|
|
14
|
+
- Retrospective Instructions
|
|
15
|
+
|
|
16
|
+
**使用方法:**
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
npx @aramassa/ai-rules extract --recipe presets/basic.yaml --src artifact/instructions
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
**対象プロジェクト:**
|
|
23
|
+
|
|
24
|
+
- すべてのプロジェクトタイプ(言語・環境に依存しない共通ルール)
|
|
25
|
+
|
|
26
|
+
### `typescript.yaml`
|
|
27
|
+
|
|
28
|
+
TypeScriptプロジェクト向けの標準的なinstruction構成です。
|
|
29
|
+
|
|
30
|
+
**含まれる内容:**
|
|
31
|
+
|
|
32
|
+
- AI Document Generation
|
|
33
|
+
- TypeScript Coding Rules
|
|
34
|
+
- TypeScript / Vitest
|
|
35
|
+
|
|
36
|
+
**使用方法:**
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
npx @aramassa/ai-rules extract --recipe presets/typescript.yaml --src artifact/instructions
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### `infrastructure-ansible.yaml`
|
|
43
|
+
|
|
44
|
+
インフラストラクチャ管理とAnsibleを使用したプロジェクト向けの設定です。
|
|
45
|
+
|
|
46
|
+
**含まれる内容:**
|
|
47
|
+
|
|
48
|
+
- Infrastructure General Principles
|
|
49
|
+
- Ansible Infrastructure Automation
|
|
50
|
+
- Infrastructure Change Planning
|
|
51
|
+
|
|
52
|
+
**使用方法:**
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
npx @aramassa/ai-rules extract --recipe presets/infrastructure-ansible.yaml --src artifact/instructions
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**対象プロジェクト:**
|
|
59
|
+
|
|
60
|
+
- Ansibleを使用したインフラ自動化プロジェクト
|
|
61
|
+
- クラウドインフラ管理プロジェクト
|
|
62
|
+
- DevOps・SRE関連プロジェクト
|
|
63
|
+
- 設定管理・自動化プロジェクト
|
|
64
|
+
|
|
65
|
+
### `chatmodes.yaml`
|
|
66
|
+
|
|
67
|
+
AI対話支援機能(chatmodes)をプロジェクトに統合するための設定です。
|
|
68
|
+
|
|
69
|
+
**含まれる内容:**
|
|
70
|
+
|
|
71
|
+
- Instruction Improve Chatmode - プロジェクト指示の改善支援
|
|
72
|
+
- Planning Chatmode - todo_plans作成支援
|
|
73
|
+
|
|
74
|
+
**使用方法:**
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
npx @aramassa/ai-rules extract --recipe presets/chatmodes.yaml --src artifact/chatmodes
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
**対象プロジェクト:**
|
|
81
|
+
|
|
82
|
+
- ai-rulesを活用した開発プロジェクト
|
|
83
|
+
- 構造化されたプランニングプロセスが必要なプロジェクト
|
|
84
|
+
- 継続的なinstruction改善を行うプロジェクト
|
|
85
|
+
|
|
86
|
+
## カスタムプリセットの作成
|
|
87
|
+
|
|
88
|
+
新しいプリセットを作成する場合は、以下の手順で行ってください:
|
|
89
|
+
|
|
90
|
+
1. 必要なinstructionファイルを `artifact/instructions/` 以下に作成
|
|
91
|
+
2. YAML形式のrecipeファイルを `presets/` ディレクトリに作成
|
|
92
|
+
3. このREADMEにプリセットの説明を追加
|
|
93
|
+
4. テスト実行して動作確認
|
|
94
|
+
|
|
95
|
+
### recipeファイル形式例
|
|
96
|
+
|
|
97
|
+
```yaml
|
|
98
|
+
recipe:
|
|
99
|
+
- title: "ドキュメントのタイトル"
|
|
100
|
+
frontmatter:
|
|
101
|
+
description: "説明"
|
|
102
|
+
applyTo: "適用対象パターン"
|
|
103
|
+
out: "./出力先パス"
|
|
104
|
+
type: "対象のinstructionタイプ"
|
|
105
|
+
language: "対象言語"
|
|
106
|
+
mode: "append" # オプション:既存ファイルに追記
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
詳細な仕様については、プロジェクトのメインREADMEを参照してください。
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
recipe:
|
|
2
|
+
- title: Communication Rules
|
|
3
|
+
frontmatter:
|
|
4
|
+
description: |
|
|
5
|
+
These rules are for writing clear and effective communication in the project.
|
|
6
|
+
out: ./.github/copilot-instructions.md
|
|
7
|
+
type: planning,documentation
|
|
8
|
+
- title: Package Management Rules
|
|
9
|
+
frontmatter:
|
|
10
|
+
description: |
|
|
11
|
+
These rules are for managing project dependencies and packages effectively.
|
|
12
|
+
out: ./.github/copilot-instructions.md
|
|
13
|
+
mode: append
|
|
14
|
+
type: package-management
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
recipe:
|
|
2
|
+
- title: Instruction Improve Chatmode
|
|
3
|
+
frontmatter:
|
|
4
|
+
description: |
|
|
5
|
+
Chatmode for improving the project instructions through retrospective analysis.
|
|
6
|
+
Provides structured approach to analyzing past tasks and converting insights into GitHub issues.
|
|
7
|
+
Includes comprehensive GitHub integration tools for issue and pull request management.
|
|
8
|
+
tools:
|
|
9
|
+
[
|
|
10
|
+
"changes",
|
|
11
|
+
"create_issue",
|
|
12
|
+
"list_issues",
|
|
13
|
+
"get_issue",
|
|
14
|
+
"get_pull_request",
|
|
15
|
+
"create_pull_request",
|
|
16
|
+
"list_pull_requests",
|
|
17
|
+
"get_pull_request_comments",
|
|
18
|
+
"get_pull_request_reviews",
|
|
19
|
+
"search_issues",
|
|
20
|
+
"search_pull_requests",
|
|
21
|
+
]
|
|
22
|
+
out: ./.github/chatmodes/Instruction Improve.chatmode.md
|
|
23
|
+
type: chatmode
|
|
24
|
+
filters:
|
|
25
|
+
chatmode: instruction-improve
|
|
26
|
+
variables:
|
|
27
|
+
INSTRUCTION_GITHUB_REPO: https://github.com/Aramassa/ai-rules
|
|
28
|
+
- title: Planning Chatmode
|
|
29
|
+
frontmatter:
|
|
30
|
+
description: |
|
|
31
|
+
Chatmode for supporting todo_plans creation with structured planning process.
|
|
32
|
+
Provides phase-based guidance for requirement clarification, technical investigation, and implementation planning.
|
|
33
|
+
tools:
|
|
34
|
+
[
|
|
35
|
+
"changes",
|
|
36
|
+
"searchResults",
|
|
37
|
+
"editFiles",
|
|
38
|
+
"search",
|
|
39
|
+
"add_issue_comment",
|
|
40
|
+
"add_sub_issue",
|
|
41
|
+
"assign_copilot_to_issue",
|
|
42
|
+
"create_issue",
|
|
43
|
+
"create_pull_request_with_copilot",
|
|
44
|
+
"get_code_scanning_alert",
|
|
45
|
+
"get_discussion",
|
|
46
|
+
"get_discussion_comments",
|
|
47
|
+
"get_issue_comments",
|
|
48
|
+
"get_pull_request",
|
|
49
|
+
"get_pull_request_diff",
|
|
50
|
+
"get_pull_request_files",
|
|
51
|
+
"list_commits",
|
|
52
|
+
"list_issues",
|
|
53
|
+
"list_pull_requests",
|
|
54
|
+
"search_code",
|
|
55
|
+
"search_issues",
|
|
56
|
+
"search_pull_requests",
|
|
57
|
+
"search_repositories",
|
|
58
|
+
"update_issue",
|
|
59
|
+
"update_pull_request",
|
|
60
|
+
]
|
|
61
|
+
out: ./.github/chatmodes/Planning.chatmode.md
|
|
62
|
+
type: chatmode
|
|
63
|
+
filters:
|
|
64
|
+
chatmode: planning
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
recipe:
|
|
2
|
+
- title: Infrastructure General Principles
|
|
3
|
+
frontmatter:
|
|
4
|
+
description: |
|
|
5
|
+
General principles and best practices for infrastructure management.
|
|
6
|
+
applyTo: "**/*"
|
|
7
|
+
out: ./.github/instructions/infrastructure.instructions.md
|
|
8
|
+
type: infrastructure
|
|
9
|
+
category: best-practices
|
|
10
|
+
- title: Ansible Infrastructure Automation
|
|
11
|
+
mode: append
|
|
12
|
+
out: ./.github/instructions/infrastructure.instructions.md
|
|
13
|
+
type: infrastructure
|
|
14
|
+
language: ansible
|
|
15
|
+
- title: Infrastructure Change Planning
|
|
16
|
+
mode: append
|
|
17
|
+
out: ./.github/instructions/infrastructure.instructions.md
|
|
18
|
+
type: infrastructure
|
|
19
|
+
category: planning
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
recipe:
|
|
2
|
+
- import: :basic
|
|
3
|
+
- import: :docs-ai
|
|
4
|
+
- title: Typescript Coding Rules
|
|
5
|
+
frontmatter:
|
|
6
|
+
description: |
|
|
7
|
+
These rules are for writing TypeScript code in the project.
|
|
8
|
+
applyTo: "**/*.ts"
|
|
9
|
+
out: ./.github/instructions/typescript.instructions.md
|
|
10
|
+
type: coding-rules
|
|
11
|
+
language: typescript
|
|
12
|
+
- title: TypeScript / Vitest
|
|
13
|
+
mode: append
|
|
14
|
+
out: ./.github/instructions/typescript.instructions.md
|
|
15
|
+
type: test
|
|
16
|
+
language: typescript
|