@groupby/ai-dev 0.5.9 → 0.5.11
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/package.json +1 -1
- package/teams/fhr-neowise/commands/address-pr.md +120 -0
- package/teams/fhr-neowise/commands/ready-pr.md +70 -0
- package/teams/fhr-neowise/commands/review-pr.md +111 -0
- package/teams/fhr-neowise/commands/tdd-implementation.md +86 -0
- package/teams/fhr-neowise/commands/write-plan.md +23 -0
- package/teams/fhr-neowise/commands/write-pr.md +21 -0
- package/teams/fhr-neowise/commands/write-spec.md +25 -0
- package/teams/fhr-neowise/skills/agent-routing/SKILL.md +72 -0
- package/teams/fhr-neowise/skills/code-review/SKILL.md +83 -0
- package/teams/fhr-neowise/skills/code-review/review-template.md +90 -0
- package/teams/fhr-neowise/skills/mermaid-diagram/SKILL.md +94 -0
- package/teams/fhr-neowise/skills/mermaid-diagram/references/BEST_PRACTICES.md +96 -0
- package/teams/fhr-neowise/skills/mermaid-diagram/references/architecture.md +434 -0
- package/teams/fhr-neowise/skills/mermaid-diagram/references/block.md +753 -0
- package/teams/fhr-neowise/skills/mermaid-diagram/references/c4.md +619 -0
- package/teams/fhr-neowise/skills/mermaid-diagram/references/classDiagram.md +1186 -0
- package/teams/fhr-neowise/skills/mermaid-diagram/references/config-configuration.md +72 -0
- package/teams/fhr-neowise/skills/mermaid-diagram/references/config-directives.md +342 -0
- package/teams/fhr-neowise/skills/mermaid-diagram/references/config-layouts.md +40 -0
- package/teams/fhr-neowise/skills/mermaid-diagram/references/config-math.md +96 -0
- package/teams/fhr-neowise/skills/mermaid-diagram/references/config-theming.md +246 -0
- package/teams/fhr-neowise/skills/mermaid-diagram/references/config-tidy-tree.md +89 -0
- package/teams/fhr-neowise/skills/mermaid-diagram/references/cynefin.md +279 -0
- package/teams/fhr-neowise/skills/mermaid-diagram/references/entityRelationshipDiagram.md +670 -0
- package/teams/fhr-neowise/skills/mermaid-diagram/references/eventmodeling.md +475 -0
- package/teams/fhr-neowise/skills/mermaid-diagram/references/examples.md +301 -0
- package/teams/fhr-neowise/skills/mermaid-diagram/references/flowchart.md +2116 -0
- package/teams/fhr-neowise/skills/mermaid-diagram/references/gantt.md +725 -0
- package/teams/fhr-neowise/skills/mermaid-diagram/references/gitgraph.md +2138 -0
- package/teams/fhr-neowise/skills/mermaid-diagram/references/ishikawa.md +66 -0
- package/teams/fhr-neowise/skills/mermaid-diagram/references/kanban.md +161 -0
- package/teams/fhr-neowise/skills/mermaid-diagram/references/mindmap.md +335 -0
- package/teams/fhr-neowise/skills/mermaid-diagram/references/packet.md +153 -0
- package/teams/fhr-neowise/skills/mermaid-diagram/references/pie.md +93 -0
- package/teams/fhr-neowise/skills/mermaid-diagram/references/quadrantChart.md +267 -0
- package/teams/fhr-neowise/skills/mermaid-diagram/references/radar.md +269 -0
- package/teams/fhr-neowise/skills/mermaid-diagram/references/railroad.md +337 -0
- package/teams/fhr-neowise/skills/mermaid-diagram/references/requirementDiagram.md +495 -0
- package/teams/fhr-neowise/skills/mermaid-diagram/references/sankey.md +415 -0
- package/teams/fhr-neowise/skills/mermaid-diagram/references/sequenceDiagram.md +1195 -0
- package/teams/fhr-neowise/skills/mermaid-diagram/references/stateDiagram.md +670 -0
- package/teams/fhr-neowise/skills/mermaid-diagram/references/timeline.md +571 -0
- package/teams/fhr-neowise/skills/mermaid-diagram/references/treeView.md +321 -0
- package/teams/fhr-neowise/skills/mermaid-diagram/references/treemap.md +353 -0
- package/teams/fhr-neowise/skills/mermaid-diagram/references/userJourney.md +42 -0
- package/teams/fhr-neowise/skills/mermaid-diagram/references/venn.md +134 -0
- package/teams/fhr-neowise/skills/mermaid-diagram/references/wardley.md +732 -0
- package/teams/fhr-neowise/skills/mermaid-diagram/references/xyChart.md +312 -0
- package/teams/fhr-neowise/skills/mermaid-diagram/references/zenuml.md +474 -0
- package/teams/fhr-neowise/skills/mermaid-diagram/scripts/sync_docs.py +138 -0
- package/teams/fhr-neowise/skills/pull-request-authoring/COMPLEX.template.md +52 -0
- package/teams/fhr-neowise/skills/pull-request-authoring/NON-CODE.template.md +15 -0
- package/teams/fhr-neowise/skills/pull-request-authoring/SIMPLE.template.md +20 -0
- package/teams/fhr-neowise/skills/pull-request-authoring/SKILL.md +102 -0
- package/teams/fhr-neowise/skills/spec-investigation/SKILL.md +139 -0
- package/teams/fhr-neowise/skills/spec-investigation/TEMPLATE.spec.md +74 -0
- package/teams/fhr-neowise/skills/tdd-workflow/SKILL.md +137 -0
- package/teams/fhr-neowise/skills/write-plan/SKILL.md +285 -0
- package/teams/fhr-neowise/skills/write-plan/assets/TEMPLATE.checklist.json +79 -0
- package/teams/fhr-neowise/skills/write-plan/assets/TEMPLATE.plan.md +158 -0
- package/teams/rangers/resources/project-doc-contract.md +41 -0
- package/teams/rangers/skills/team-code-review/SKILL.md +66 -0
- package/teams/rangers/skills/team-development/SKILL.md +43 -0
- package/teams/rangers/skills/team-docs-snapshot/SKILL.md +58 -0
- package/teams/rangers/skills/team-docs-snapshot/scripts/collect_project_docs.py +166 -0
- package/teams/rangers/skills/team-phase-planning/SKILL.md +63 -0
- package/teams/rangers/skills/team-project-orientation/SKILL.md +46 -0
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: team-docs-snapshot
|
|
3
|
+
description: >-
|
|
4
|
+
Collect AI/project documentation from a repository into a temporary review folder. Use when documentation needs to be pulled together for orientation, planning, review, migration, or skill-authoring analysis without loading every source file into the active context.
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Team Docs Snapshot
|
|
8
|
+
|
|
9
|
+
## Purpose
|
|
10
|
+
|
|
11
|
+
Use this skill to gather a project's AI-facing documentation into a disposable snapshot. Prefer it when the task is about understanding or migrating docs, comparing routing systems, reviewing documentation drift, or preparing a compact handoff for another session.
|
|
12
|
+
|
|
13
|
+
## Workflow
|
|
14
|
+
|
|
15
|
+
1. Identify the target repository root.
|
|
16
|
+
2. Check for a project routing contract before collecting files:
|
|
17
|
+
- `docs/ai/index.md`
|
|
18
|
+
- `docs/project/ai-context.md`
|
|
19
|
+
- `.github/copilot-instructions.md`
|
|
20
|
+
- `AGENTS.md`
|
|
21
|
+
3. Run the bundled collector from the project root or pass `--root` explicitly:
|
|
22
|
+
|
|
23
|
+
```sh
|
|
24
|
+
python3 docs/ai/skills/team-docs-snapshot/scripts/collect_project_docs.py --root .
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
If the skill is being used from the shared repo source instead of an installed project copy, run the script from this skill folder:
|
|
28
|
+
|
|
29
|
+
```sh
|
|
30
|
+
python3 teams/rangers/skills/team-docs-snapshot/scripts/collect_project_docs.py --root /path/to/project
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
4. Read the generated `MANIFEST.md` first. Use it to decide which copied docs to load next.
|
|
34
|
+
5. Treat the snapshot as scratch material. Do not commit it unless the user explicitly asks.
|
|
35
|
+
|
|
36
|
+
## Collector Options
|
|
37
|
+
|
|
38
|
+
- `--out <dir>` writes to a specific snapshot directory.
|
|
39
|
+
- `--include <glob>` adds extra files. Repeat it for multiple patterns.
|
|
40
|
+
- `--exclude <glob>` removes files from the default or included matches.
|
|
41
|
+
- `--combined` also writes `COMBINED.md` for tools that need one linear document.
|
|
42
|
+
|
|
43
|
+
Default collection includes common project guidance docs:
|
|
44
|
+
|
|
45
|
+
- `docs/ai/**/*.md`
|
|
46
|
+
- `docs/project/**/*.md`
|
|
47
|
+
- `.github/copilot-instructions.md`
|
|
48
|
+
- `AGENTS.md`
|
|
49
|
+
- `README.md`
|
|
50
|
+
|
|
51
|
+
## Output Expectations
|
|
52
|
+
|
|
53
|
+
When reporting back, include only:
|
|
54
|
+
|
|
55
|
+
- snapshot directory
|
|
56
|
+
- number of files collected
|
|
57
|
+
- notable missing entrypoints
|
|
58
|
+
- recommended docs to read next
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Collect project AI/documentation files into a temporary snapshot directory."""
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
|
|
6
|
+
import argparse
|
|
7
|
+
import fnmatch
|
|
8
|
+
import shutil
|
|
9
|
+
from datetime import datetime
|
|
10
|
+
from pathlib import Path
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
DEFAULT_PATTERNS = [
|
|
14
|
+
"docs/ai/**/*.md",
|
|
15
|
+
"docs/project/**/*.md",
|
|
16
|
+
".github/copilot-instructions.md",
|
|
17
|
+
"AGENTS.md",
|
|
18
|
+
"README.md",
|
|
19
|
+
]
|
|
20
|
+
|
|
21
|
+
DEFAULT_EXCLUDES = [
|
|
22
|
+
".git/**",
|
|
23
|
+
"node_modules/**",
|
|
24
|
+
"tmp/**",
|
|
25
|
+
"dist/**",
|
|
26
|
+
"build/**",
|
|
27
|
+
]
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def parse_args() -> argparse.Namespace:
|
|
31
|
+
parser = argparse.ArgumentParser(
|
|
32
|
+
description="Copy project AI-facing docs into a temporary review snapshot.",
|
|
33
|
+
)
|
|
34
|
+
parser.add_argument(
|
|
35
|
+
"--root",
|
|
36
|
+
default=".",
|
|
37
|
+
help="Project root to scan. Defaults to the current directory.",
|
|
38
|
+
)
|
|
39
|
+
parser.add_argument(
|
|
40
|
+
"--out",
|
|
41
|
+
help="Snapshot output directory. Defaults to <root>/tmp/ai-docs-snapshot-<timestamp>.",
|
|
42
|
+
)
|
|
43
|
+
parser.add_argument(
|
|
44
|
+
"--include",
|
|
45
|
+
action="append",
|
|
46
|
+
default=[],
|
|
47
|
+
help="Additional glob to include. Can be repeated.",
|
|
48
|
+
)
|
|
49
|
+
parser.add_argument(
|
|
50
|
+
"--exclude",
|
|
51
|
+
action="append",
|
|
52
|
+
default=[],
|
|
53
|
+
help="Glob to exclude from copied results. Can be repeated.",
|
|
54
|
+
)
|
|
55
|
+
parser.add_argument(
|
|
56
|
+
"--combined",
|
|
57
|
+
action="store_true",
|
|
58
|
+
help="Also write COMBINED.md with all copied docs in one file.",
|
|
59
|
+
)
|
|
60
|
+
return parser.parse_args()
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def is_excluded(relative_path: str, patterns: list[str]) -> bool:
|
|
64
|
+
return any(fnmatch.fnmatch(relative_path, pattern) for pattern in patterns)
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def collect_matches(root: Path, includes: list[str], excludes: list[str]) -> list[Path]:
|
|
68
|
+
matches: set[Path] = set()
|
|
69
|
+
for pattern in includes:
|
|
70
|
+
for match in root.glob(pattern):
|
|
71
|
+
if match.is_file():
|
|
72
|
+
matches.add(match.resolve())
|
|
73
|
+
|
|
74
|
+
root_resolved = root.resolve()
|
|
75
|
+
filtered: list[Path] = []
|
|
76
|
+
for match in matches:
|
|
77
|
+
try:
|
|
78
|
+
relative = match.relative_to(root_resolved).as_posix()
|
|
79
|
+
except ValueError:
|
|
80
|
+
continue
|
|
81
|
+
if not is_excluded(relative, excludes):
|
|
82
|
+
filtered.append(match)
|
|
83
|
+
|
|
84
|
+
return sorted(filtered, key=lambda path: path.relative_to(root_resolved).as_posix())
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
def write_manifest(root: Path, out_dir: Path, files: list[Path], missing: list[str]) -> None:
|
|
88
|
+
lines = [
|
|
89
|
+
"# Project Docs Snapshot",
|
|
90
|
+
"",
|
|
91
|
+
f"Source root: `{root}`",
|
|
92
|
+
f"Generated: `{datetime.now().isoformat(timespec='seconds')}`",
|
|
93
|
+
f"Files collected: {len(files)}",
|
|
94
|
+
"",
|
|
95
|
+
"## Files",
|
|
96
|
+
"",
|
|
97
|
+
]
|
|
98
|
+
for file_path in files:
|
|
99
|
+
relative = file_path.relative_to(root).as_posix()
|
|
100
|
+
lines.append(f"- `{relative}`")
|
|
101
|
+
|
|
102
|
+
if missing:
|
|
103
|
+
lines.extend(["", "## Missing Common Entrypoints", ""])
|
|
104
|
+
for pattern in missing:
|
|
105
|
+
lines.append(f"- `{pattern}`")
|
|
106
|
+
|
|
107
|
+
out_dir.joinpath("MANIFEST.md").write_text("\n".join(lines) + "\n", encoding="utf-8")
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
def write_combined(root: Path, out_dir: Path, files: list[Path]) -> None:
|
|
111
|
+
sections: list[str] = ["# Combined Project Docs", ""]
|
|
112
|
+
for file_path in files:
|
|
113
|
+
relative = file_path.relative_to(root).as_posix()
|
|
114
|
+
sections.extend([f"## {relative}", ""])
|
|
115
|
+
try:
|
|
116
|
+
sections.append(file_path.read_text(encoding="utf-8"))
|
|
117
|
+
except UnicodeDecodeError:
|
|
118
|
+
sections.append("[Skipped: file is not UTF-8 text]")
|
|
119
|
+
sections.append("")
|
|
120
|
+
out_dir.joinpath("COMBINED.md").write_text("\n".join(sections), encoding="utf-8")
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
def main() -> int:
|
|
124
|
+
args = parse_args()
|
|
125
|
+
root = Path(args.root).expanduser().resolve()
|
|
126
|
+
if not root.is_dir():
|
|
127
|
+
raise SystemExit(f"Project root does not exist or is not a directory: {root}")
|
|
128
|
+
|
|
129
|
+
timestamp = datetime.now().strftime("%Y%m%d-%H%M%S")
|
|
130
|
+
out_dir = (
|
|
131
|
+
Path(args.out).expanduser().resolve()
|
|
132
|
+
if args.out
|
|
133
|
+
else root / "tmp" / f"ai-docs-snapshot-{timestamp}"
|
|
134
|
+
)
|
|
135
|
+
out_dir.mkdir(parents=True, exist_ok=False)
|
|
136
|
+
|
|
137
|
+
includes = DEFAULT_PATTERNS + args.include
|
|
138
|
+
excludes = DEFAULT_EXCLUDES + args.exclude
|
|
139
|
+
files = collect_matches(root, includes, excludes)
|
|
140
|
+
|
|
141
|
+
missing = []
|
|
142
|
+
for pattern in DEFAULT_PATTERNS:
|
|
143
|
+
if not any(root.glob(pattern)):
|
|
144
|
+
missing.append(pattern)
|
|
145
|
+
|
|
146
|
+
for file_path in files:
|
|
147
|
+
relative = file_path.relative_to(root)
|
|
148
|
+
destination = out_dir / relative
|
|
149
|
+
destination.parent.mkdir(parents=True, exist_ok=True)
|
|
150
|
+
shutil.copy2(file_path, destination)
|
|
151
|
+
|
|
152
|
+
write_manifest(root, out_dir, files, missing)
|
|
153
|
+
if args.combined:
|
|
154
|
+
write_combined(root, out_dir, files)
|
|
155
|
+
|
|
156
|
+
print(f"Snapshot: {out_dir}")
|
|
157
|
+
print(f"Files collected: {len(files)}")
|
|
158
|
+
if missing:
|
|
159
|
+
print("Missing common entrypoints:")
|
|
160
|
+
for pattern in missing:
|
|
161
|
+
print(f"- {pattern}")
|
|
162
|
+
return 0
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
if __name__ == "__main__":
|
|
166
|
+
raise SystemExit(main())
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: team-phase-planning
|
|
3
|
+
description: >-
|
|
4
|
+
Break project work into reviewable phases using the repo's routing docs, workflow, phase plan, architecture, and decision log. Use when planning a feature slice, sequencing Jira tickets, defining review gates, or turning broad work into implementable phases.
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Team Phase Planning
|
|
8
|
+
|
|
9
|
+
## Purpose
|
|
10
|
+
|
|
11
|
+
Use this skill to convert broad work into small phases that can be implemented, validated, and reviewed independently.
|
|
12
|
+
|
|
13
|
+
## Context Loading
|
|
14
|
+
|
|
15
|
+
1. Read the project router:
|
|
16
|
+
- `docs/ai/index.md`
|
|
17
|
+
- `docs/project/ai-context.md`
|
|
18
|
+
- `.github/copilot-instructions.md`, if present
|
|
19
|
+
- `docs/ai/resources/project-doc-contract.md`, if no project router exists
|
|
20
|
+
2. Read the working agreement and workflow docs.
|
|
21
|
+
3. Load task-specific planning docs:
|
|
22
|
+
- phase plan
|
|
23
|
+
- decision log
|
|
24
|
+
- architecture docs
|
|
25
|
+
- API or frontend scope docs when the work touches those surfaces
|
|
26
|
+
4. For large or unfamiliar doc sets, use `team-docs-snapshot` and read its manifest first.
|
|
27
|
+
|
|
28
|
+
## Planning Flow
|
|
29
|
+
|
|
30
|
+
1. State the goal and non-goals.
|
|
31
|
+
2. Identify dependencies, unknowns, and project constraints.
|
|
32
|
+
3. Split the work into phases that each have:
|
|
33
|
+
- user-visible or reviewable scope
|
|
34
|
+
- files or areas likely to change
|
|
35
|
+
- validation plan
|
|
36
|
+
- review gate
|
|
37
|
+
- docs that may need updates
|
|
38
|
+
4. Put risky discovery early.
|
|
39
|
+
5. Keep phases small enough that a reviewer can understand the diff without reconstructing the entire project.
|
|
40
|
+
|
|
41
|
+
## Output Format
|
|
42
|
+
|
|
43
|
+
Use this shape unless the user asks otherwise:
|
|
44
|
+
|
|
45
|
+
```markdown
|
|
46
|
+
# Plan: [Work Name]
|
|
47
|
+
|
|
48
|
+
## Goal
|
|
49
|
+
[One paragraph]
|
|
50
|
+
|
|
51
|
+
## Assumptions
|
|
52
|
+
- [Assumption]
|
|
53
|
+
|
|
54
|
+
## Phases
|
|
55
|
+
### Phase 1: [Name]
|
|
56
|
+
Scope:
|
|
57
|
+
Validation:
|
|
58
|
+
Review gate:
|
|
59
|
+
Docs impact:
|
|
60
|
+
|
|
61
|
+
## Open Questions
|
|
62
|
+
- [Question]
|
|
63
|
+
```
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: team-project-orientation
|
|
3
|
+
description: >-
|
|
4
|
+
Orient to an unfamiliar repository through its AI routing docs, project docs, README, architecture notes, and working agreement. Use when entering a repo, moving a task into a new chat, preparing implementation, or auditing whether the project exposes enough context for AI-assisted work.
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Team Project Orientation
|
|
8
|
+
|
|
9
|
+
## Purpose
|
|
10
|
+
|
|
11
|
+
Use this skill to build a small, accurate mental model of a project without reading the whole repo. The goal is to find the project's own context router, then load the smallest useful set of docs.
|
|
12
|
+
|
|
13
|
+
## Orientation Flow
|
|
14
|
+
|
|
15
|
+
1. Inspect the repo shape:
|
|
16
|
+
- `README.md`
|
|
17
|
+
- `AGENTS.md`
|
|
18
|
+
- package or workspace manifests
|
|
19
|
+
- top-level app, package, and docs folders
|
|
20
|
+
2. Locate the AI/project routing entrypoints, in this order:
|
|
21
|
+
- `docs/ai/index.md`
|
|
22
|
+
- `.github/copilot-instructions.md`
|
|
23
|
+
- `docs/project/ai-context.md`
|
|
24
|
+
- `docs/ai/working-agreement.md`
|
|
25
|
+
- `docs/ai/resources/project-doc-contract.md`, if this team resource is installed
|
|
26
|
+
3. If a routing table exists, follow it. Always prefer its task-specific guidance over generic assumptions.
|
|
27
|
+
4. If no router exists, infer a temporary route from common docs:
|
|
28
|
+
- architecture: `docs/**/architecture*.md`
|
|
29
|
+
- product/context: `docs/**/product*.md`, `docs/**/overview*.md`
|
|
30
|
+
- decisions: `docs/**/decision*.md`, `docs/**/adr*.md`
|
|
31
|
+
- workflow: `docs/**/workflow*.md`, `docs/**/phase*.md`
|
|
32
|
+
- contracts: `docs/**/*contract*.md`, `docs/**/*api*.md`
|
|
33
|
+
5. For broad documentation analysis, use `team-docs-snapshot` before loading many files.
|
|
34
|
+
|
|
35
|
+
## Orientation Notes
|
|
36
|
+
|
|
37
|
+
Keep the output concise and project-owned:
|
|
38
|
+
|
|
39
|
+
- purpose and product/domain
|
|
40
|
+
- main apps/packages and how they fit together
|
|
41
|
+
- tech stack and validation commands, when documented
|
|
42
|
+
- AI routing map and any missing entrypoints
|
|
43
|
+
- implementation rules that look non-negotiable
|
|
44
|
+
- risks or ambiguities to resolve before coding
|
|
45
|
+
|
|
46
|
+
Do not copy project knowledge into a reusable skill. Project facts belong in that repo's docs.
|