@aliaksandarpratashchyk/kickcat 0.5.8 → 0.6.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 +2 -0
- package/codex/index.md +11 -0
- package/codex/issue.md +76 -0
- package/codex/label.md +47 -0
- package/codex/milestone.md +56 -0
- package/dist/bundle.js +1 -1
- package/dist/bundle.js.map +1 -1
- package/package.json +2 -1
- package/templates/workflows/kickcat-pull-issue.yml +4 -3
- package/templates/workflows/kickcat-pull-label.yml +2 -1
- package/templates/workflows/kickcat-pull-milestone.yml +1 -0
package/README.md
CHANGED
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
|
|
7
7
|
KickCat keeps GitHub metadata (milestones, labels, issues) as YAML and syncs it with a GitHub repository or a file-based store. It preserves schema-driven ordering and hash comments so you can review changes as code.
|
|
8
8
|
|
|
9
|
+
- Documentation: [KickCat Codex](./codex/index.md)
|
|
10
|
+
|
|
9
11
|
## What it does
|
|
10
12
|
|
|
11
13
|
- Manage milestones, labels, and issues as YAML with `$schema` + `hash` comments.
|
package/codex/index.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# KickCat Codex
|
|
2
|
+
|
|
3
|
+
This document is the *preferred* KickCat user manual.
|
|
4
|
+
|
|
5
|
+
It states a set of rules and recommendations, which aren't necessarily required for KickCat's stability, but ***CAN*** be adopted to ensure uniformity of all GitHub entities.
|
|
6
|
+
|
|
7
|
+
It is composed of several manuals, each for its corresponding GitHub entity:
|
|
8
|
+
|
|
9
|
+
- ["Label Design Manual"](./label.md)
|
|
10
|
+
- ["Milestone Design Manual"](./milestone.md)
|
|
11
|
+
- ["Issue Design Manual"](./issue.md)
|
package/codex/issue.md
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
## Issue Design Manual
|
|
2
|
+
|
|
3
|
+
This document is a formal GitHub **issue** design manual.
|
|
4
|
+
|
|
5
|
+
It states a set of rules and recommendations, which are expected to be followed by all project participants when adding a new **issue** to ensure uniformity of all **issues**.
|
|
6
|
+
|
|
7
|
+
**1.** All **issues** ***SHOULD*** be stored in the `.github/issues.yml` YAML file.
|
|
8
|
+
|
|
9
|
+
**2.** `.github/issues.yml` is a multi-document YAML file described by [issue.schema.yml](../schemas/issue.schema.yml).
|
|
10
|
+
|
|
11
|
+
**3.** Each document inside the multi-document YAML file `.github/issues.yml` ***MUST*** start with a reference to its schema using special YAML comment syntax:
|
|
12
|
+
|
|
13
|
+
```yml
|
|
14
|
+
# yaml-language-server: $schema=RELATIVE_PATH_TO_SCHEMA
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
`RELATIVE_PATH_TO_SCHEMA` is the relative path to the corresponding schema inside the `node_modules` folder.
|
|
18
|
+
|
|
19
|
+
For instance: if `node_modules` is on the same level as `.github`, then `../node_modules/@aliaksandarpratashchyk/kickcat/schemas/issue.schema.yml` is the relative path to the issue schema.
|
|
20
|
+
|
|
21
|
+
**4.** All YAML documents in `.github/issues.yml` are divided into two categories: already synchronized with GitHub and new ones.
|
|
22
|
+
|
|
23
|
+
Already synchronized documents have a special YAML `hash` comment immediately after the `yaml-language-server` schema comment. This `hash` comment ***CANNOT*** be edited manually; KickCat manages it automatically.
|
|
24
|
+
|
|
25
|
+
**5.** [issue.schema.yml](../schemas/issue.schema.yml) uses an extended JSON Schema format that can define the **order** of properties inside YAML documents. All YAML documents ***MUST*** follow the property order specified by their schema.
|
|
26
|
+
|
|
27
|
+
**6.** The **issue** `number` is assigned automatically by GitHub during synchronization stage and ***MUST NOT*** be edited manually.
|
|
28
|
+
|
|
29
|
+
**7.** The **issue** `title` ***SHOULD*** follow a semantic commit style, with an optional scope for monorepos.
|
|
30
|
+
|
|
31
|
+
If an **issue** is epic and effectively equivalent to a **milestone**, the **issue** `title` ***SHOULD*** use the same icon prefix as the **milestone**.
|
|
32
|
+
|
|
33
|
+
For instance: `🚀 feat: setup project and scaffold raw implementation` for **milestone** `🚀 v1.0.0 - Project Setup & Raw Implementation`.
|
|
34
|
+
|
|
35
|
+
**8.** The **issue** `milestone` property ***MUST*** reference the associated milestone, if an **issue** has one.
|
|
36
|
+
|
|
37
|
+
It can be either:
|
|
38
|
+
|
|
39
|
+
- **Milestone** `number`, if the **milestone** is already synchronized with GitHub and has a `number`.
|
|
40
|
+
- **Milestone** `title`, if the **milestone** is new and does not yet have a `number`. The KickCat utility will replace it with `number` during synchronization.
|
|
41
|
+
|
|
42
|
+
**9.** The **issue** `labels` property is a list of **labels** associated with the **issue**. Label `name` is used as the **label** identifier.
|
|
43
|
+
|
|
44
|
+
**10.** The **issue** `state` property is either `open` or `closed`. For a new **issue**, it ***CAN*** be omitted.
|
|
45
|
+
|
|
46
|
+
**11.** The **issue** `dependencies` property is a list of **issues** that this **issue** depends on. These **issues** ***MUST*** be closed before this **issue** can be closed. As issue identifiers in this list, either:
|
|
47
|
+
|
|
48
|
+
- **Issue** `number` ***MUST*** be used if the **issue** is already synchronized with GitHub.
|
|
49
|
+
- **Issue** `title` ***MUST*** be used if the **issue** is new and does not yet have a `number`.
|
|
50
|
+
|
|
51
|
+
**12.** The issue `description` property is multi-line Markdown text with this structure:
|
|
52
|
+
|
|
53
|
+
- Start with a short introduction of the **issue**.
|
|
54
|
+
- Follow with a `Goal` section where the purpose of the **issue** is clearly stated. Visually, this section ***SHOULD*** be marked with the `## 🎯 Goal` header.
|
|
55
|
+
- Follow with an optional `Subtasks` section, used when the **issue** is large and can be split into subtasks. Visually, this section ***SHOULD*** be marked with the `## 🧩 Subtasks` header.
|
|
56
|
+
- End with an `Outcomes` section that states expected results after the **issue** is closed. Visually, this section ***SHOULD*** be marked with the `## ✅ Outcomes` header.
|
|
57
|
+
|
|
58
|
+
Below is an example description for **issue** `🚀 feat: setup project and scaffold raw implementation`:
|
|
59
|
+
|
|
60
|
+
```markdown
|
|
61
|
+
Set up the project tooling and scaffold the raw implementation of the project.
|
|
62
|
+
|
|
63
|
+
## 🎯 Goal
|
|
64
|
+
Ship a small but complete v1 foundation.
|
|
65
|
+
|
|
66
|
+
## 🧩 Subtasks
|
|
67
|
+
- Set up NPM project
|
|
68
|
+
- Configure GitHub workflows
|
|
69
|
+
- Implement initial course structure:
|
|
70
|
+
- Episode scripts
|
|
71
|
+
- Code snippets
|
|
72
|
+
|
|
73
|
+
## ✅ Outcomes
|
|
74
|
+
- Workflows are present
|
|
75
|
+
- Structured raw implementation is added
|
|
76
|
+
```
|
package/codex/label.md
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
## Label Design Manual
|
|
2
|
+
|
|
3
|
+
This document is a formal GitHub **label** design manual.
|
|
4
|
+
|
|
5
|
+
It states a set of rules and recommendations, which are expected to be followed by all project participants when adding a new **label** to ensure uniformity of all **labels**.
|
|
6
|
+
|
|
7
|
+
**1.** All **labels** ***SHOULD*** be stored in the `.github/labels.yml` YAML file.
|
|
8
|
+
|
|
9
|
+
**2.** `.github/labels.yml` is a multi-document YAML file described by [label.schema.yml](../schemas/label.schema.yml).
|
|
10
|
+
|
|
11
|
+
**3.** Each document inside the multi-document YAML file `.github/labels.yml` ***MUST*** start with a reference to its schema using special YAML comment syntax:
|
|
12
|
+
|
|
13
|
+
```yml
|
|
14
|
+
# yaml-language-server: $schema=RELATIVE_PATH_TO_SCHEMA
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
`RELATIVE_PATH_TO_SCHEMA` is the relative path to the corresponding schema inside the `node_modules` folder.
|
|
18
|
+
|
|
19
|
+
For instance: if `node_modules` is on the same level as `.github`, then `../node_modules/@aliaksandarpratashchyk/kickcat/schemas/label.schema.yml` is the relative path to the label schema.
|
|
20
|
+
|
|
21
|
+
**4.** All documents in `.github/labels.yml` are divided into two categories: already synchronized with GitHub and new ones.
|
|
22
|
+
|
|
23
|
+
Already synchronized documents have a special YAML `hash` comment immediately after the `yaml-language-server` schema comment. This `hash` comment ***CANNOT*** be edited manually; KickCat manages it automatically.
|
|
24
|
+
|
|
25
|
+
**5.** [label.schema.yml](../schemas/label.schema.yml) uses an extended JSON Schema format that defines the **order** of properties inside YAML documents. All YAML documents ***MUST*** follow the specified property order.
|
|
26
|
+
|
|
27
|
+
**6.** The set of **labels** ***SHOULD*** be designed based on current repository or project needs, in an amount sufficient to describe current issues and the project specifics.
|
|
28
|
+
|
|
29
|
+
For a typical coding project, examples include `priority:low`, `priority:medium`, `priority:high`, `type:feature`, and `type:bug`.
|
|
30
|
+
|
|
31
|
+
For a monorepo, `scope` category **labels** can be added.
|
|
32
|
+
|
|
33
|
+
For non-coding projects, such as writing-focused projects, `priority` **labels** can still be useful, but `type` **labels** ***SHOULD*** be designed according to project needs.
|
|
34
|
+
|
|
35
|
+
**7.** The label `name` ***MUST*** start with a category prefix, separated with a colon `:` from the rest of the name. Typical category prefixes:
|
|
36
|
+
|
|
37
|
+
- `priority` - used by **labels** that specify feature criticality or urgency, for example `priority:low` or `priority:high`.
|
|
38
|
+
- `type` - used by **labels** that specify issue type, for example `type:feature` or `type:fix`.
|
|
39
|
+
- `scope` - used in monorepos to specify a project or package.
|
|
40
|
+
|
|
41
|
+
For instance, `scope:client` and `scope:server` can be used for a simple client-server application. In a single-project repository, `scope` **labels** ***SHOULD NOT*** be used.
|
|
42
|
+
|
|
43
|
+
**8.** The **label** `color` ***SHOULD*** match the meaning of the label.
|
|
44
|
+
|
|
45
|
+
For instance, `priority` labels can follow a traffic-light metaphor: red for `priority:high`, yellow for `priority:medium`, and green for `priority:low`.
|
|
46
|
+
|
|
47
|
+
**9.** The **label** `description` ***SHOULD*** be short but clear enough to explain the label.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
## Milestone Design Manual
|
|
2
|
+
|
|
3
|
+
This document is a formal GitHub **milestone** design manual.
|
|
4
|
+
|
|
5
|
+
It states a set of rules and recommendations, which are expected to be followed by all project participants when adding a new **milestone** to ensure uniformity of all **milestones**.
|
|
6
|
+
|
|
7
|
+
**1.** All **milestones** ***SHOULD*** be stored in the `.github/milestones.yml` YAML file.
|
|
8
|
+
|
|
9
|
+
**2.** `.github/milestones.yml` is a multi-document YAML file described by [milestone.schema.yml](../schemas/milestone.schema.yml).
|
|
10
|
+
|
|
11
|
+
**3.** Each document inside the multi-document YAML file `.github/milestones.yml` ***MUST*** start with a reference to its schema using special YAML comment syntax:
|
|
12
|
+
|
|
13
|
+
```yml
|
|
14
|
+
# yaml-language-server: $schema=RELATIVE_PATH_TO_SCHEMA
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
`RELATIVE_PATH_TO_SCHEMA` is the relative path to the corresponding schema inside the `node_modules` folder.
|
|
18
|
+
|
|
19
|
+
For instance: if `node_modules` is on the same level as `.github`, then `../node_modules/@aliaksandarpratashchyk/kickcat/schemas/milestone.schema.yml` is the relative path to the milestone schema.
|
|
20
|
+
|
|
21
|
+
**4.** All documents in `.github/milestones.yml` are divided into two categories: already synchronized with GitHub and new ones.
|
|
22
|
+
|
|
23
|
+
Already synchronized documents have a special YAML `hash` comment immediately after the `yaml-language-server` schema comment. This `hash` comment ***CANNOT*** be edited manually; KickCat manages it automatically.
|
|
24
|
+
|
|
25
|
+
**5.** [milestone.schema.yml](../schemas/milestone.schema.yml) uses an extended JSON Schema format that can define the **order** of properties inside YAML documents. All YAML documents ***MUST*** follow the property order specified by their schema.
|
|
26
|
+
|
|
27
|
+
**6.** The **milestone** `number` is assigned automatically by GitHub during synchronization stage and ***MUST NOT*** be edited manually.
|
|
28
|
+
|
|
29
|
+
**7.** The **milestone** `title` ***SHOULD*** follow these conventions:
|
|
30
|
+
|
|
31
|
+
- Start with a Unicode icon prefix that matches the title meaning.
|
|
32
|
+
- Follow with a version number, such as `v1.0.0`, to reference the target version for implementation.
|
|
33
|
+
- Follow with a title in Title Case.
|
|
34
|
+
|
|
35
|
+
For example: `🚀 v1.0.0 - Project Setup & Raw Implementation`
|
|
36
|
+
|
|
37
|
+
**8.** The **milestone** `description` is multi-line Markdown with this structure:
|
|
38
|
+
|
|
39
|
+
- Start with a short introduction.
|
|
40
|
+
- Follow with a `Goal` section that clearly and briefly states why the milestone exists. Visually, this section should start with the `### 🎯 Goal` header.
|
|
41
|
+
- End with an `Outcomes` section that lists expected implementation outcomes. Visually, this section should start with the `### ✅ Outcomes` header.
|
|
42
|
+
|
|
43
|
+
Below is an example description for **milestone** `🚀 v1.0.0 - Project Setup & Raw Implementation`:
|
|
44
|
+
|
|
45
|
+
```markdown
|
|
46
|
+
Initialize the repository structure and developer tooling for the project.
|
|
47
|
+
|
|
48
|
+
Scaffold the first usable implementation.
|
|
49
|
+
|
|
50
|
+
### 🎯 Goal
|
|
51
|
+
Establish a foundation for further improvements.
|
|
52
|
+
|
|
53
|
+
### ✅ Outcomes
|
|
54
|
+
- Project scaffolded (README, workflows)
|
|
55
|
+
- Raw implementation added
|
|
56
|
+
```
|