skiv 0.0.1
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/LICENSE.txt +7 -0
- package/README.md +27 -0
- package/bin/________________________skiv.ts +3 -0
- package/bin/skiv.js +3 -0
- package/dist/cjs/IssueService.js +236 -0
- package/dist/cjs/Logger.js +39 -0
- package/dist/cjs/Member.js +83 -0
- package/dist/cjs/cli.js +94 -0
- package/dist/cjs/commands/Command.js +66 -0
- package/dist/cjs/commands/InitCommand.js +27 -0
- package/dist/cjs/commands/IssueCommand.js +39 -0
- package/dist/cjs/commands/RunCommand.js +57 -0
- package/dist/cjs/commands/StartCommand.js +69 -0
- package/dist/cjs/db/index.js +27 -0
- package/dist/cjs/db/migrations.js +36 -0
- package/dist/cjs/db/schema.js +25 -0
- package/dist/cjs/utils.js +32 -0
- package/dist/esm/IssueService.d.ts +65 -0
- package/dist/esm/IssueService.d.ts.map +1 -0
- package/dist/esm/IssueService.js +232 -0
- package/dist/esm/Logger.d.ts +21 -0
- package/dist/esm/Logger.d.ts.map +1 -0
- package/dist/esm/Logger.js +36 -0
- package/dist/esm/Member.d.ts +21 -0
- package/dist/esm/Member.d.ts.map +1 -0
- package/dist/esm/Member.js +77 -0
- package/dist/esm/cli.d.ts +2 -0
- package/dist/esm/cli.d.ts.map +1 -0
- package/dist/esm/cli.js +89 -0
- package/dist/esm/commands/Command.d.ts +19 -0
- package/dist/esm/commands/Command.d.ts.map +1 -0
- package/dist/esm/commands/Command.js +30 -0
- package/dist/esm/commands/InitCommand.d.ts +5 -0
- package/dist/esm/commands/InitCommand.d.ts.map +1 -0
- package/dist/esm/commands/InitCommand.js +21 -0
- package/dist/esm/commands/IssueCommand.d.ts +10 -0
- package/dist/esm/commands/IssueCommand.d.ts.map +1 -0
- package/dist/esm/commands/IssueCommand.js +33 -0
- package/dist/esm/commands/RunCommand.d.ts +5 -0
- package/dist/esm/commands/RunCommand.d.ts.map +1 -0
- package/dist/esm/commands/RunCommand.js +18 -0
- package/dist/esm/commands/StartCommand.d.ts +28 -0
- package/dist/esm/commands/StartCommand.d.ts.map +1 -0
- package/dist/esm/commands/StartCommand.js +63 -0
- package/dist/esm/db/index.d.ts +6 -0
- package/dist/esm/db/index.d.ts.map +1 -0
- package/dist/esm/db/index.js +19 -0
- package/dist/esm/db/migrations.d.ts +3 -0
- package/dist/esm/db/migrations.d.ts.map +1 -0
- package/dist/esm/db/migrations.js +33 -0
- package/dist/esm/db/schema.d.ts +46 -0
- package/dist/esm/db/schema.d.ts.map +1 -0
- package/dist/esm/db/schema.js +20 -0
- package/dist/esm/utils.d.ts +7 -0
- package/dist/esm/utils.d.ts.map +1 -0
- package/dist/esm/utils.js +25 -0
- package/package.json +42 -0
- package/skeleton/config.yaml +6 -0
- package/skeleton/roles/corder/.claude/settings.local.json +13 -0
- package/skeleton/roles/corder/CLAUDE.md +66 -0
- package/skeleton/roles/corder/custom.ts +62 -0
- package/skeleton/roles/reviewer/.claude/settings.local.json +13 -0
- package/skeleton/roles/reviewer/CLAUDE.md +59 -0
- package/skeleton/roles/reviewer/custom.ts +54 -0
- package/skeleton/roles/se/.claude/settings.local.json +13 -0
- package/skeleton/roles/se/CLAUDE.md +41 -0
- package/skeleton/workspaces/.gitkeep +0 -0
package/package.json
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "skiv",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"publishConfig": {
|
|
5
|
+
"access": "public"
|
|
6
|
+
},
|
|
7
|
+
"description": "claude code orchestration tool",
|
|
8
|
+
"license": "MIT",
|
|
9
|
+
"author": "",
|
|
10
|
+
"type": "commonjs",
|
|
11
|
+
"main": "dist/esm/index.js",
|
|
12
|
+
"scripts": {
|
|
13
|
+
"build": "npm run build:cjs && npm run build:esm",
|
|
14
|
+
"build:cjs": "tsc --project tsconfig.cjs.json",
|
|
15
|
+
"build:esm": "tsc --project tsconfig.esm.json"
|
|
16
|
+
},
|
|
17
|
+
"module": "dist/esm/index.js",
|
|
18
|
+
"types": "dist/esm/index.d.ts",
|
|
19
|
+
"files": [
|
|
20
|
+
"bin",
|
|
21
|
+
"dist",
|
|
22
|
+
"skeleton"
|
|
23
|
+
],
|
|
24
|
+
"bin": {
|
|
25
|
+
"skiv": "bin/skiv.js"
|
|
26
|
+
},
|
|
27
|
+
"devDependencies": {
|
|
28
|
+
"@types/better-sqlite3": "^7.6.13",
|
|
29
|
+
"@types/fs-extra": "^11.0.4",
|
|
30
|
+
"@types/js-yaml": "^4.0.9",
|
|
31
|
+
"@types/node": "^25.2.0",
|
|
32
|
+
"tsx": "^4.21.0",
|
|
33
|
+
"typescript": "^5.9.3"
|
|
34
|
+
},
|
|
35
|
+
"dependencies": {
|
|
36
|
+
"better-sqlite3": "^12.6.2",
|
|
37
|
+
"commander": "^14.0.3",
|
|
38
|
+
"fs-extra": "^11.3.3",
|
|
39
|
+
"js-yaml": "^4.1.1",
|
|
40
|
+
"kysely": "^0.28.11"
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# ROLE: Worker Agent
|
|
2
|
+
|
|
3
|
+
あなたはissueを実装します。
|
|
4
|
+
|
|
5
|
+
## ワークフロー
|
|
6
|
+
|
|
7
|
+
### 1. Issueの取得
|
|
8
|
+
プロンプトで渡されたIssueを参照してください。
|
|
9
|
+
|
|
10
|
+
### 2. 前提条件
|
|
11
|
+
- ブランチ名: `issues/issue-<issue.id>`
|
|
12
|
+
- 作業パス: `repo/issues/issue-<issue.id>`
|
|
13
|
+
|
|
14
|
+
### 3. 作業環境の準備
|
|
15
|
+
Issueが存在する場合、以下の手順で作業ブランチを作成します。
|
|
16
|
+
- Git Worktreeを作成: `git worktree add <作業パス> -b <ブランチ名> || git worktree add <作業パス> <ブランチ名>`
|
|
17
|
+
- **作業ディレクトリへ移動: `cd <作業パス>`**
|
|
18
|
+
|
|
19
|
+
### 4. 実装
|
|
20
|
+
Issueのタイトルや仕様を確認し、実装を行います。
|
|
21
|
+
- **実装前に既存の関連コードを読み、プロジェクトのコーディングスタイルを確認してください。**
|
|
22
|
+
- 変更は最小限に留めること。
|
|
23
|
+
- 関連のないコードをリファクタリングしないこと。
|
|
24
|
+
|
|
25
|
+
### 5. コミット
|
|
26
|
+
変更完了後、以下の形式でコミットします。
|
|
27
|
+
- メッセージ: `<type>: issue #<issue.id> <issue.title>`
|
|
28
|
+
- <type>は新機能なら `feat`, 修正なら `fix` を使用。
|
|
29
|
+
|
|
30
|
+
### 6. worktree削除
|
|
31
|
+
- コマンド: `git worktree remove <ブランチ名>`
|
|
32
|
+
|
|
33
|
+
### 7. レビュー準備
|
|
34
|
+
最後にIssueを更新して完了報告をします。
|
|
35
|
+
`npx skiv issue update_status <issue.id> ready_for_review`
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
## 利用可能なツール
|
|
39
|
+
|
|
40
|
+
Issue Tool:
|
|
41
|
+
npx skiv issue
|
|
42
|
+
|
|
43
|
+
Git:
|
|
44
|
+
git
|
|
45
|
+
|
|
46
|
+
### 使用可能なコマンド
|
|
47
|
+
|
|
48
|
+
Issue Tool:
|
|
49
|
+
- ready_for_review
|
|
50
|
+
|
|
51
|
+
Git:
|
|
52
|
+
- worktree
|
|
53
|
+
- add
|
|
54
|
+
- commit
|
|
55
|
+
- diff
|
|
56
|
+
|
|
57
|
+
## 禁止事項
|
|
58
|
+
- 新しいIssueの作成
|
|
59
|
+
- 他タスクのレビュー
|
|
60
|
+
- 割り当てられたタスク範囲外のファイル編集
|
|
61
|
+
|
|
62
|
+
## 行動ルール
|
|
63
|
+
1. タスクを取得する
|
|
64
|
+
2. 実装する
|
|
65
|
+
3. コミットする
|
|
66
|
+
4. レビュー準備完了としてマークする
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import {Issue} from "../../../../skiv/src/db/schema";
|
|
2
|
+
import Member from "../../../src/Member";
|
|
3
|
+
|
|
4
|
+
export default class CustomMember extends Member {
|
|
5
|
+
|
|
6
|
+
public async before(): Promise<boolean> {
|
|
7
|
+
const assignedIssue = await this.issueService.getAssignedIssue(this.NAME, 'open')
|
|
8
|
+
if (assignedIssue) {
|
|
9
|
+
|
|
10
|
+
console.log(`[NEW ISSUE]
|
|
11
|
+
Title: ${assignedIssue.title}
|
|
12
|
+
Description: ${assignedIssue.description}
|
|
13
|
+
`)
|
|
14
|
+
|
|
15
|
+
this.createPrompt(assignedIssue)
|
|
16
|
+
return true
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const assign = await this.issueService.assignNextIssue(this.NAME)
|
|
20
|
+
if (assign) {
|
|
21
|
+
|
|
22
|
+
console.log(`[NEW ISSUE]
|
|
23
|
+
Title: ${assign.title}
|
|
24
|
+
Description: ${assign.description}
|
|
25
|
+
`)
|
|
26
|
+
|
|
27
|
+
this.createPrompt(assign)
|
|
28
|
+
return true
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
console.log('no issue')
|
|
32
|
+
|
|
33
|
+
return false
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
private createPrompt(issue: Issue) {
|
|
37
|
+
|
|
38
|
+
const comments = issue.comments?.map(comment => {
|
|
39
|
+
return `- id: ${comment.id}
|
|
40
|
+
by: ${comment.by}
|
|
41
|
+
message: ${comment.message}
|
|
42
|
+
`
|
|
43
|
+
}).join("\n") || ''
|
|
44
|
+
|
|
45
|
+
this.PROMPT = `あなたの名前は${this.NAME}です。
|
|
46
|
+
あなたに割り当てられた課題は以下です。
|
|
47
|
+
|
|
48
|
+
id:
|
|
49
|
+
${issue.id}
|
|
50
|
+
|
|
51
|
+
タスク名:
|
|
52
|
+
${issue.title}
|
|
53
|
+
|
|
54
|
+
概要:
|
|
55
|
+
${issue.description}
|
|
56
|
+
|
|
57
|
+
コメント:
|
|
58
|
+
${comments}
|
|
59
|
+
|
|
60
|
+
このあとはCLAUDE.mdに沿って処理をしてください。`
|
|
61
|
+
}
|
|
62
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# ROLE: Reviewer Agent
|
|
2
|
+
|
|
3
|
+
あなたはコード変更のレビューのみを行います。
|
|
4
|
+
|
|
5
|
+
## ワークフロー
|
|
6
|
+
|
|
7
|
+
### 1. レビューする Issue の取得
|
|
8
|
+
プロンプトで渡された Issue を参照してください。
|
|
9
|
+
|
|
10
|
+
### 2. 前提条件
|
|
11
|
+
- ブランチ名: `issues/issue-<issue.id>`
|
|
12
|
+
- 作業パス: `repo/issues/issue-<issue.id>`
|
|
13
|
+
|
|
14
|
+
### 3. 作業環境の準備
|
|
15
|
+
Issue が存在する場合、以下の手順で作業ブランチを作成します。
|
|
16
|
+
- Git Worktree を作成: `git worktree add <作業パス> -b <ブランチ名> || git worktree add <作業パス> <ブランチ名>`
|
|
17
|
+
- **作業ディレクトリへ移動: `cd <作業パス>`**
|
|
18
|
+
|
|
19
|
+
### 4. レビュー
|
|
20
|
+
Issue のタイトルや仕様を確認し、以下の観点から実装が適切に行われているか確認します。
|
|
21
|
+
- コーディングスタイルに沿っているか
|
|
22
|
+
- テストは充実しているか
|
|
23
|
+
- 変更は最小限に留まっているか
|
|
24
|
+
- Issue に関連のない変更をしていないか
|
|
25
|
+
|
|
26
|
+
### 5. worktree削除
|
|
27
|
+
ブランチを削除します
|
|
28
|
+
- コマンド: `git worktree remove <ブランチ名>`
|
|
29
|
+
|
|
30
|
+
### 6. マージリクエスト / 却下
|
|
31
|
+
コードに問題がなければ Issue をマージリクエストの状態にします。
|
|
32
|
+
- コマンド: `npx skiv issue update_status <issue.id> request_for_merge`
|
|
33
|
+
|
|
34
|
+
問題があれば指摘事項をコメントして Issue を再び assign に戻します。
|
|
35
|
+
- コマンド:
|
|
36
|
+
- `npx skiv issue comment <issue.id> <YOUR_NAME> <message>`
|
|
37
|
+
- `npx skiv issue assign <issue.id> <YOUR_NAME>`
|
|
38
|
+
|
|
39
|
+
## 利用可能なツール
|
|
40
|
+
|
|
41
|
+
Issue Tool:
|
|
42
|
+
npx skiv issue
|
|
43
|
+
|
|
44
|
+
Git:
|
|
45
|
+
git diff
|
|
46
|
+
|
|
47
|
+
### 実施可能なこと
|
|
48
|
+
- 差分の確認
|
|
49
|
+
- レビューコメントの追加
|
|
50
|
+
- 完了としてマーク
|
|
51
|
+
|
|
52
|
+
### 例
|
|
53
|
+
npx skiv issue comment 12 Reviewer "Refactor this function"
|
|
54
|
+
npx skiv issue done 12
|
|
55
|
+
|
|
56
|
+
## 禁止事項
|
|
57
|
+
- 実装コードの作成
|
|
58
|
+
- Issueの作成
|
|
59
|
+
- Issueのアサイン
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import {Issue} from "../../../../skiv/src/db/schema";
|
|
2
|
+
import Member from "../../../src/Member";
|
|
3
|
+
|
|
4
|
+
export default class CustomMember extends Member {
|
|
5
|
+
|
|
6
|
+
public async before(): Promise<boolean> {
|
|
7
|
+
const readyForReviewIssue = await this.issueService.getReviewIssue()
|
|
8
|
+
|
|
9
|
+
if (!readyForReviewIssue) {
|
|
10
|
+
console.log('no issue for review')
|
|
11
|
+
return false
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
// if (readyForReviewIssue.status !== 'ready_for_review') {
|
|
15
|
+
// console.log('issue is not ready for review')
|
|
16
|
+
// return false
|
|
17
|
+
// }
|
|
18
|
+
|
|
19
|
+
console.log(`[NEW ISSUE]
|
|
20
|
+
Title: ${readyForReviewIssue.title}
|
|
21
|
+
Description: ${readyForReviewIssue.description}
|
|
22
|
+
`)
|
|
23
|
+
|
|
24
|
+
this.createPrompt(readyForReviewIssue)
|
|
25
|
+
return true
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
private createPrompt(issue: Issue) {
|
|
29
|
+
|
|
30
|
+
const comments = issue.comments?.map(comment => {
|
|
31
|
+
return `- id: ${comment.id}
|
|
32
|
+
by: ${comment.by}
|
|
33
|
+
message: ${comment.message}
|
|
34
|
+
`
|
|
35
|
+
}).join("\n") || ''
|
|
36
|
+
|
|
37
|
+
this.PROMPT = `あなたの名前は \`${this.NAME}\` です。
|
|
38
|
+
あなたがレビューするタスクは以下の通りです。
|
|
39
|
+
|
|
40
|
+
id:
|
|
41
|
+
${issue.id}
|
|
42
|
+
|
|
43
|
+
タスク名:
|
|
44
|
+
${issue.title}
|
|
45
|
+
|
|
46
|
+
概要:
|
|
47
|
+
${issue.description}
|
|
48
|
+
|
|
49
|
+
コメント:
|
|
50
|
+
${comments}
|
|
51
|
+
|
|
52
|
+
このあとはCLAUDE.mdに沿って処理をしてください。`
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# ROLE: SE (System Engineer Agent)
|
|
2
|
+
|
|
3
|
+
あなたの責任範囲は計画立案とタスク分解のみです。
|
|
4
|
+
|
|
5
|
+
## 利用可能なツール
|
|
6
|
+
|
|
7
|
+
Issue Tool:
|
|
8
|
+
npx skiv issue
|
|
9
|
+
|
|
10
|
+
### 使用可能なコマンド
|
|
11
|
+
- create
|
|
12
|
+
- list
|
|
13
|
+
- comment
|
|
14
|
+
|
|
15
|
+
### 例
|
|
16
|
+
|
|
17
|
+
Issueの作成:
|
|
18
|
+
npx skiv issue create "Implement auth API" high design.md#auth
|
|
19
|
+
|
|
20
|
+
優先度は次のいずれかである必要があります:
|
|
21
|
+
- low
|
|
22
|
+
- mid
|
|
23
|
+
- high
|
|
24
|
+
|
|
25
|
+
他の値が必要な場合は、最も近いものを選択してください。
|
|
26
|
+
新しい優先度レベルを作成してはいけません。
|
|
27
|
+
|
|
28
|
+
指示コメントの追加:
|
|
29
|
+
npx skiv issue comment 12 SE "Use JWT auth"
|
|
30
|
+
|
|
31
|
+
## 禁止事項
|
|
32
|
+
- ソースコードの編集
|
|
33
|
+
- Issueのアサイン
|
|
34
|
+
- gitコマンドの実行
|
|
35
|
+
- レビュー作業の実施
|
|
36
|
+
|
|
37
|
+
## 行動ルール
|
|
38
|
+
- 要件を小さなタスクに分解すること
|
|
39
|
+
- ただし実装とテストは同一のタスクにすること
|
|
40
|
+
- 各タスクは単独で実装可能でなければならない
|
|
41
|
+
- 常に仕様書の該当セクションを参照すること
|
|
File without changes
|