@ggdna/dna-gg 0.4.1 → 0.5.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 CHANGED
@@ -23,11 +23,14 @@ publish.
23
23
 
24
24
  ## Skills
25
25
 
26
- - `/ticket` — creates a ticket and adds the repos it needs
27
- - `/commit` — proposes a message and commits through `gg do commit`
28
- - `/push` — pushes the ticket branches
29
- - `/publish` — releases the ticket
30
- - `/cleanup` — removes what the ticket left behind
26
+ All skills of this layer are prefixed with `gg-`:
27
+
28
+ - `/gg` — lists the skills below and says which one comes next
29
+ - `/gg-ticket` — creates a ticket and adds the repos it needs
30
+ - `/gg-commit` — proposes a message and commits through `gg do commit`
31
+ - `/gg-push` — pushes the ticket branches
32
+ - `/gg-publish` — releases the ticket
33
+ - `/gg-cleanup` — removes what the ticket left behind
31
34
 
32
35
  ## Configuration
33
36
 
@@ -37,7 +40,7 @@ publish.
37
40
  ## Scripts
38
41
 
39
42
  - `dna/scripts/delete-feature-branch.js` — the one script this layer calls
40
- itself, from `/cleanup`, with the two functions it imports:
43
+ itself, from `/gg-cleanup`, with the two functions it imports:
41
44
  `dna/scripts/functions/colors.js` and
42
45
  `dna/scripts/functions/run-command.js`
43
46
 
package/dna/CLAUDE.md CHANGED
@@ -6,5 +6,6 @@ comes next:
6
6
 
7
7
  @doc/guides/for-ai/ai-dev-guide.md
8
8
 
9
- The steps are also available as skills: `/ticket`, `/commit`, `/push`,
10
- `/publish`, `/cleanup`.
9
+ The steps are also available as skills: `/gg-ticket`, `/gg-commit`,
10
+ `/gg-push`, `/gg-publish`, `/gg-cleanup`. `/gg` lists them and says which
11
+ one comes next.
package/dna/_dna.json CHANGED
@@ -8,7 +8,7 @@
8
8
  // every gg repo follows. Parents first, this layer wins.
9
9
  //
10
10
  // dna_scripts is deliberately not a parent: this layer calls exactly one
11
- // of its scripts — `delete-feature-branch.js` from the /cleanup skill —
11
+ // of its scripts — `delete-feature-branch.js` from the /gg-cleanup skill —
12
12
  // and carries its own copy of it under dna/scripts/ instead. A consumer
13
13
  // that wants the full script set lists dna_scripts itself; the copies
14
14
  // here are byte-identical, so having both layers changes nothing.
@@ -31,7 +31,7 @@
31
31
  "ecosystem": null,
32
32
  "resolvedVersion": null,
33
33
  "via": null,
34
- "hash": "0x5b707abead2f6ae7"
34
+ "hash": "0x80c6dc9dbb7e23c3"
35
35
  }
36
36
  ],
37
37
  "claude": {
@@ -42,32 +42,36 @@
42
42
  "baseHash": "0x6883da335b415f9d",
43
43
  "instances": [
44
44
  {
45
- "path": ".claude/skills/cleanup/SKILL.md",
46
- "hash": "0xeaa18dbc86a24731"
45
+ "path": ".claude/skills/gg-cleanup/SKILL.md",
46
+ "hash": "0x4a6903a51168486a"
47
47
  },
48
48
  {
49
- "path": ".claude/skills/commit/SKILL.md",
50
- "hash": "0xad0e75ab4d725133"
49
+ "path": ".claude/skills/gg-commit/SKILL.md",
50
+ "hash": "0xd2e82c49f737093b"
51
51
  },
52
52
  {
53
- "path": ".claude/skills/index/SKILL.md",
54
- "hash": "0xc47429e51622cd7b"
53
+ "path": ".claude/skills/gg-publish/SKILL.md",
54
+ "hash": "0xaa7d82e9b407f561"
55
55
  },
56
56
  {
57
- "path": ".claude/skills/install/SKILL.md",
58
- "hash": "0x29c4ded946b50053"
57
+ "path": ".claude/skills/gg-push/SKILL.md",
58
+ "hash": "0x140e1b8d6cbe222e"
59
+ },
60
+ {
61
+ "path": ".claude/skills/gg-ticket/SKILL.md",
62
+ "hash": "0x06f83f4f73c9fb42"
59
63
  },
60
64
  {
61
- "path": ".claude/skills/publish/SKILL.md",
62
- "hash": "0xb8e70eff3563f75d"
65
+ "path": ".claude/skills/gg/SKILL.md",
66
+ "hash": "0x0e643054f49cf6a2"
63
67
  },
64
68
  {
65
- "path": ".claude/skills/push/SKILL.md",
66
- "hash": "0x76c357ca9933317d"
69
+ "path": ".claude/skills/index/SKILL.md",
70
+ "hash": "0xc47429e51622cd7b"
67
71
  },
68
72
  {
69
- "path": ".claude/skills/ticket/SKILL.md",
70
- "hash": "0x1c257bb5b8471026"
73
+ "path": ".claude/skills/install/SKILL.md",
74
+ "hash": "0x29c4ded946b50053"
71
75
  },
72
76
  {
73
77
  "path": ".github/workflows/quick_check.yaml",
@@ -75,7 +79,7 @@
75
79
  },
76
80
  {
77
81
  "path": "doc/guides/develop-guide.md",
78
- "hash": "0xbd9fa5efab7af735"
82
+ "hash": "0xc31d5f25f496a9d6"
79
83
  },
80
84
  {
81
85
  "path": "doc/guides/develop-without-ai-guide.md",
@@ -83,7 +87,7 @@
83
87
  },
84
88
  {
85
89
  "path": "doc/guides/for-ai/ai-dev-guide.md",
86
- "hash": "0x5e0118ec27bc8d6a"
90
+ "hash": "0xbbaf82081767678b"
87
91
  },
88
92
  {
89
93
  "path": "doc/guides/index-guide.md",
@@ -27,15 +27,17 @@ claude
27
27
  Start the development in Claude
28
28
 
29
29
  ```bash
30
- /ticket
30
+ /gg-ticket
31
31
  ```
32
32
 
33
33
  Use the following skills in Claude
34
34
 
35
35
  ```bash
36
- /commit
37
- /push
36
+ /gg-commit
37
+ /gg-push
38
38
  /review
39
- /publish
40
- /cleanup
39
+ /gg-publish
40
+ /gg-cleanup
41
41
  ```
42
+
43
+ `/gg` lists the skills of the workflow and says which one comes next.
@@ -10,6 +10,10 @@ found in the LICENSE file in the root of this package.
10
10
 
11
11
  ## Ask the developer for the ticket infos
12
12
 
13
+ Ask for these one after the other and give the developer a single input
14
+ field per answer — one question per field, never all of them in one
15
+ question and never as a plain prose question:
16
+
13
17
  - Ask for the ticket ID
14
18
  - Ask for the ticket title
15
19
  - Ask for the ticket description
@@ -29,26 +33,32 @@ gg do create ticket dnaJiraPrefix-145 -m"Fix issue abc"
29
33
  cd tickets/dnaJiraPrefix-145
30
34
  ```
31
35
 
32
- ## Choose the project management repo
36
+ ## Choose the project management repo — or work without one
33
37
 
34
- Every ticket belongs to a project management (PM) repo. It holds the plans,
35
- decisions and blog posts of a project, but no code.
38
+ A ticket may belong to a project management repo. It holds the plans,
39
+ decisions and blog posts of a project, but no code. It is optional: ask the
40
+ user whether this ticket uses one. Write "project management repo" whenever
41
+ you write to the user, never "PM repo".
36
42
 
37
- Look at the `index.jsonc` of each repo in .ocean and find the PM repo the
38
- ticket belongs to: its summary or domain talks about project management or
39
- planning, not about code. If one fits, propose it to the user. If none fits,
40
- ask the user which repo to use, or whether to create a new PM repo.
43
+ With a project management repo: look at the `index.jsonc` of each repo in
44
+ .ocean and find the one the ticket belongs to — its summary or domain talks
45
+ about project management or planning, not about code. If one fits, propose
46
+ it to the user. If none fits, ask the user which repo to use, or whether to
47
+ create a new one.
41
48
 
42
- After the user's confirmation, add the PM repo to the ticket **before** any
43
- other repo:
49
+ After the user's confirmation, add it to the ticket **before** any other
50
+ repo:
44
51
 
45
52
  ```bash
46
53
  gg do add pm_repo
47
54
  ```
48
55
 
49
- If the PM repo has `doc/guides/pm-repo-guide.md`, read it: it describes how
50
- the PM repo is structured and how planning works there. If the file does not
51
- exist, follow the guides the PM repo has.
56
+ If it has `doc/guides/pm-repo-guide.md`, read it: it describes how the repo
57
+ is structured and how planning works there. If the file does not exist,
58
+ follow the guides that repo has.
59
+
60
+ Without a project management repo: skip this step and continue with the git
61
+ repositories. The ticket then carries no plan of its own.
52
62
 
53
63
  ## Add git repositories
54
64
 
@@ -61,8 +71,8 @@ Ask the user about this. Also explain to the user what you roughly want to
61
71
  change in which repo to implement the ticket and let them confirm that the
62
72
  corresponding repos are added to the ticket.
63
73
 
64
- If the ticket is only planned (see below), the PM repo may be the only repo
65
- of the ticket.
74
+ If the ticket is only planned (see below), the project management repo may
75
+ be the only repo of the ticket.
66
76
 
67
77
  After the user's confirmation, add the repos to the ticket:
68
78
 
@@ -80,9 +90,10 @@ gg do code
80
90
 
81
91
  Ask the user whether the ticket is planned before it is implemented.
82
92
 
83
- If yes, write the plan into the PM repo, following its
93
+ If yes, write the plan into the project management repo, following its
84
94
  `doc/guides/pm-repo-guide.md` if present, otherwise its other guides: the
85
- goal, the affected repos, the rough steps and open questions. Let the user
95
+ goal, the affected repos, the rough steps and open questions. Without a
96
+ project management repo, put the plan into the ticket itself. Let the user
86
97
  review the plan and revise it until they confirm it.
87
98
 
88
99
  ## Implement (optional)
@@ -92,8 +103,8 @@ planned. Some tickets are only planned; the implementation follows in a later
92
103
  ticket.
93
104
 
94
105
  - Implement: implement your features based on the guides
95
- - Plan only: skip this step. The following steps then apply to the PM repo
96
- only.
106
+ - Plan only: skip this step. The following steps then apply to the project
107
+ management repo only.
97
108
 
98
109
  ## Commit
99
110
 
@@ -101,6 +112,15 @@ ticket.
101
112
  gg do commit
102
113
  ```
103
114
 
115
+ `gg do commit` and `gg can commit` act on all repos of the ticket. When you
116
+ are inside a single repo instead of the ticket folder, use the standalone
117
+ form on that repo:
118
+
119
+ ```bash
120
+ gg one can commit
121
+ gg one do commit
122
+ ```
123
+
104
124
  ## Push
105
125
 
106
126
  ```bash
@@ -125,7 +145,7 @@ Afterwards load the review-light skill and execute it.
125
145
  - Create a blog post for the current ticket
126
146
  - Update the index.jsonc and README.md
127
147
  - Create the configuration for gg do publish
128
- - If the ticket was only planned, publish the PM repo only
148
+ - If the ticket was only planned, publish the project management repo only
129
149
 
130
150
  Ask the user to run the following command **manually**:
131
151
 
@@ -0,0 +1,38 @@
1
+ ---
2
+ name: gg
3
+ description: Lists the skills of the gg workflow and says which one comes next. Use when the user says "/gg", asks which gg skills exist, or asks how the gg workflow continues.
4
+ ---
5
+
6
+ # The gg workflow skills
7
+
8
+ Every skill of this workflow carries the `gg-` prefix. Print the list
9
+ below, in this order — it is the order of a ticket's life.
10
+
11
+ - `/gg-ticket` — creates a ticket and adds the repos it needs
12
+ - `/gg-commit` — proposes a message and commits through `gg do commit`,
13
+ or `gg one do commit` inside a single repo
14
+ - `/gg-push` — pushes the ticket branches with `gg do push`
15
+ - `/gg-publish` — prepares the release and hands `gg do publish` over to
16
+ the user
17
+ - `/gg-cleanup` — removes what the published ticket left behind
18
+
19
+ A repo may carry more `gg-` skills than these. Look at
20
+ `.claude/skills/gg-*` and add what you find there, with the `description`
21
+ of its `SKILL.md` as the text.
22
+
23
+ ## Say which skill comes next
24
+
25
+ Read the state of the current ticket and name the next step:
26
+
27
+ - No ticket folder yet → `/gg-ticket`
28
+ - Uncommitted work → `/gg-commit`
29
+ - Committed, not pushed → `/gg-push`
30
+ - Pushed and the pull requests are green → `/gg-publish`
31
+ - Published → `/gg-cleanup`
32
+
33
+ The review between push and publish is `gg do review` plus the
34
+ `/review-light` skill, not a `gg-` skill of this layer.
35
+
36
+ ## Important
37
+
38
+ - Only list the skills, never run one of them unasked.
@@ -1,6 +1,6 @@
1
1
  ---
2
- name: cleanup
3
- description: Removes what a published ticket left behind — feature branches, the ticket folder, and a stale workspace. Use when the user says "/cleanup" or asks to clean up after a release.
2
+ name: gg-cleanup
3
+ description: Removes what a published ticket left behind — feature branches, the ticket folder, and a stale workspace. Use when the user says "/gg-cleanup" or asks to clean up after a release.
4
4
  ---
5
5
 
6
6
  # Clean up after the publish
@@ -1,6 +1,6 @@
1
1
  ---
2
- name: commit
3
- description: Commits the ticket's work in every repo with `gg do commit`. Use when the user says "/commit" or asks to commit the current changes.
2
+ name: gg-commit
3
+ description: Commits the ticket's work with `gg do commit`, or a standalone repo with `gg one do commit`. Use when the user says "/gg-commit" or asks to commit the current changes.
4
4
  ---
5
5
 
6
6
  # Commit
@@ -8,13 +8,23 @@ description: Commits the ticket's work in every repo with `gg do commit`. Use wh
8
8
  `gg do commit` runs the checks of each repo and commits only when they are
9
9
  green. The message also becomes the `CHANGELOG.md` entry.
10
10
 
11
- ## 1. Propose a message
11
+ ## 1. Pick the command for where you are
12
+
13
+ - **In the ticket folder** — `gg can commit` and `gg do commit` act on
14
+ every repo of the ticket.
15
+ - **Inside a single repo**, a standalone one or one repo of a ticket —
16
+ `gg one can commit` and `gg one do commit` act on that repo alone.
17
+
18
+ The rest of this skill writes `gg do commit`; use the `gg one` form
19
+ whenever you are inside a repo.
20
+
21
+ ## 2. Propose a message
12
22
 
13
23
  Look at `git status` and `git diff` in the repos of the ticket. Propose one
14
24
  imperative one-liner that says what the step does, not which files changed.
15
25
  Let the user confirm it.
16
26
 
17
- ## 2. Commit
27
+ ## 3. Commit
18
28
 
19
29
  From the ticket folder:
20
30
 
@@ -22,9 +32,15 @@ From the ticket folder:
22
32
  gg do commit -m"<message>"
23
33
  ```
24
34
 
35
+ From a single repo:
36
+
37
+ ```bash
38
+ gg one do commit -m"<message>"
39
+ ```
40
+
25
41
  Add `-l` when the message must not land in `CHANGELOG.md`.
26
42
 
27
- ## 3. On a failing check
43
+ ## 4. On a failing check
28
44
 
29
45
  `gg do commit` stops at the first red check. Fix the cause, never the check,
30
46
  then run the command again. Files generated by the DNA are committed
@@ -34,4 +50,4 @@ its source under `dna/` instead.
34
50
  ## Important
35
51
 
36
52
  - Never commit without the confirmed message.
37
- - Never push here — that is `/push`.
53
+ - Never push here — that is `/gg-push`.
@@ -1,6 +1,6 @@
1
1
  ---
2
- name: publish
3
- description: Prepares the release of a reviewed ticket and hands `gg do publish` over to the user. Use when the user says "/publish" or asks to release the ticket.
2
+ name: gg-publish
3
+ description: Prepares the release of a reviewed ticket and hands `gg do publish` over to the user. Use when the user says "/gg-publish" or asks to release the ticket.
4
4
  ---
5
5
 
6
6
  # Publish
@@ -31,7 +31,7 @@ gg do publish
31
31
  ```
32
32
 
33
33
  It asks whether the ticket and the remote feature branches may be deleted.
34
- If the user declines, run `/cleanup` afterwards.
34
+ If the user declines, run `/gg-cleanup` afterwards.
35
35
 
36
36
  ## Important
37
37
 
@@ -1,6 +1,6 @@
1
1
  ---
2
- name: push
3
- description: Pushes the ticket's commits with `gg do push`. Use when the user says "/push" or asks to push the current ticket.
2
+ name: gg-push
3
+ description: Pushes the ticket's commits with `gg do push`. Use when the user says "/gg-push" or asks to push the current ticket.
4
4
  ---
5
5
 
6
6
  # Push
@@ -13,7 +13,7 @@ gg do push
13
13
 
14
14
  `gg do push` pushes the repos of the ticket in dependency order and refuses
15
15
  repos that still carry uncommitted work. If it reports such a repo, run
16
- `/commit` first and push again.
16
+ `/gg-commit` first and push again.
17
17
 
18
18
  ## Important
19
19
 
@@ -0,0 +1,86 @@
1
+ ---
2
+ name: gg-ticket
3
+ description: Creates a gg ticket and adds the repos it needs. Use when the user says "/gg-ticket", "new ticket", "fix bug X", or "implement feature Y".
4
+ ---
5
+
6
+ # Create a ticket
7
+
8
+ All `gg do` commands run inside the workspace. Ask for the workspace
9
+ directory if none is known.
10
+
11
+ ## 1. Ask for the ticket data
12
+
13
+ Ask for these three, one after the other, and give the user a single input
14
+ field per answer — one question per field, never all three in one question
15
+ and never as a plain prose question:
16
+
17
+ - Ticket ID, e.g. `DnaJiraPrefix-145`
18
+ - Title, one imperative line, e.g. `Fix issue abc`
19
+ - Description, one or two sentences on what the ticket changes
20
+
21
+ ## 2. Create the ticket
22
+
23
+ ```bash
24
+ cd ~/dev/ # workspace
25
+ gg do create ticket DnaJiraPrefix-145 -m"Fix issue abc"
26
+ cd tickets/DnaJiraPrefix-145
27
+ ```
28
+
29
+ ## 3. Choose the project management repo — or work without one
30
+
31
+ A ticket may belong to a project management repo: plans, decisions and blog
32
+ posts of a project, no code. It is optional, so ask the user which way this
33
+ ticket runs:
34
+
35
+ - **with a project management repo** — read the `index.md` of the repos in
36
+ `.ocean`, propose the one the ticket belongs to, and after the
37
+ confirmation add it **before** any other repo:
38
+
39
+ ```bash
40
+ gg do add pm_repo
41
+ ```
42
+
43
+ Read `doc/guides/pm-repo-guide.md` of that repo if it exists: it says how
44
+ the repo is structured and how planning works there. If none of the repos
45
+ fits, ask whether to create one.
46
+
47
+ - **without a project management repo** — skip this step and go straight to
48
+ the code repos. The ticket then carries no plan of its own.
49
+
50
+ Call it the "project management repo" whenever you write to the user, never
51
+ "PM repo".
52
+
53
+ ## 4. Choose the code repos
54
+
55
+ Read the `index.md` of the candidate repos in `.ocean`. Tell the user which
56
+ repos the ticket needs and what you roughly want to change in each one. If a
57
+ part belongs to a domain that has no repo yet, say so and ask whether to
58
+ create one. A ticket that is only planned may need no code repo at all.
59
+
60
+ After the confirmation:
61
+
62
+ ```bash
63
+ gg do add repo1 repo2
64
+ ```
65
+
66
+ ## 5. Open the workspace
67
+
68
+ ```bash
69
+ gg do code
70
+ ```
71
+
72
+ ## 6. Plan or implement
73
+
74
+ Ask the user whether the ticket is planned first. If yes, write the plan
75
+ into the project management repo as its `pm-repo-guide.md` describes (or as
76
+ its other guides do) and let the user confirm it. Without a project
77
+ management repo, put the plan into the ticket itself and let the user
78
+ confirm it there. Then ask whether the ticket is implemented now or only
79
+ planned — in the latter case the ticket ends with the project management
80
+ repo alone.
81
+
82
+ ## Important
83
+
84
+ - Never add repos without confirmation. Rather too few than too many — more
85
+ can be added later.
86
+ - Do not start the implementation unasked.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ggdna/dna-gg",
3
- "version": "0.4.1",
3
+ "version": "0.5.0",
4
4
  "description": "DNA layer: gg CLI workflow guides, repo setup scripts and CI check",
5
5
  "keywords": [
6
6
  "dna",
@@ -32,8 +32,8 @@
32
32
  "@ggdna/dna-install": "^0.1.1"
33
33
  },
34
34
  "devDependencies": {
35
- "@types/node": "^26.6.1",
36
- "prettier": "^3.9.6"
35
+ "@types/node": "^26.6.2",
36
+ "prettier": "^3.9.8"
37
37
  },
38
38
  "scripts": {
39
39
  "test:dart": "dart test",
@@ -1,71 +0,0 @@
1
- ---
2
- name: ticket
3
- description: Creates a gg ticket and adds the repos it needs. Use when the user says "/ticket", "new ticket", "fix bug X", or "implement feature Y".
4
- ---
5
-
6
- # Create a ticket
7
-
8
- All `gg do` commands run inside the workspace. Ask for the workspace
9
- directory if none is known.
10
-
11
- ## 1. Ask for the ticket data
12
-
13
- - Ticket ID, e.g. `DnaJiraPrefix-145`
14
- - Title, one imperative line, e.g. `Fix issue abc`
15
-
16
- ## 2. Create the ticket
17
-
18
- ```bash
19
- cd ~/dev/ # workspace
20
- gg do create ticket DnaJiraPrefix-145 -m"Fix issue abc"
21
- cd tickets/DnaJiraPrefix-145
22
- ```
23
-
24
- ## 3. Choose the project management repo
25
-
26
- Every ticket belongs to a project management (PM) repo: plans, decisions and
27
- blog posts of a project, no code. Read the `index.md` of the repos in
28
- `.ocean` and propose the PM repo the ticket belongs to. If none fits, ask
29
- which repo to use or whether to create one.
30
-
31
- After the confirmation, add it **before** any other repo:
32
-
33
- ```bash
34
- gg do add pm_repo
35
- ```
36
-
37
- Read `doc/guides/pm-repo-guide.md` of the PM repo if it exists: it says how
38
- the PM repo is structured and how planning works there.
39
-
40
- ## 4. Choose the code repos
41
-
42
- Read the `index.md` of the candidate repos in `.ocean`. Tell the user which
43
- repos the ticket needs and what you roughly want to change in each one. If a
44
- part belongs to a domain that has no repo yet, say so and ask whether to
45
- create one. A ticket that is only planned may need no code repo at all.
46
-
47
- After the confirmation:
48
-
49
- ```bash
50
- gg do add repo1 repo2
51
- ```
52
-
53
- ## 5. Open the workspace
54
-
55
- ```bash
56
- gg do code
57
- ```
58
-
59
- ## 6. Plan or implement
60
-
61
- Ask the user whether the ticket is planned first. If yes, write the plan into
62
- the PM repo as its `pm-repo-guide.md` describes (or as its other guides do)
63
- and let the user confirm it. Then ask whether the ticket is
64
- implemented now or only planned — in the latter case the ticket ends with
65
- the PM repo alone.
66
-
67
- ## Important
68
-
69
- - Never add repos without confirmation. Rather too few than too many — more
70
- can be added later.
71
- - Do not start the implementation unasked.