@jenga-ai/agent 1.3.0 → 3.0.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 +93 -256
- package/agents/developer.md +9 -8
- package/agents/scrum-master.md +57 -23
- package/agents/tester.md +51 -5
- package/hooks/on_session_end.sh +13 -1
- package/lib/generate-agent-context.js +18 -1
- package/lib/generate-copilot-instructions.js +18 -1
- package/lib/generate-skill-allow-list.js +197 -0
- package/lib/skill-allow-list.json +42 -0
- package/package.json +17 -13
- package/scripts/apply-j-prefix.sh +243 -0
- package/scripts/consume-context-digest.sh +103 -0
- package/scripts/generate-j-alias.sh +333 -0
- package/scripts/postinstall.js +25 -0
- package/scripts/sweep-stale-context-digests.sh +132 -0
- package/scripts/validate-board.sh +5 -0
- package/scripts/write-context-digest.sh +230 -0
- package/skills/{brainstorm → j-brainstorm}/SKILL.md +9 -2
- package/skills/{btw → j-btw}/SKILL.md +9 -2
- package/skills/{clearify → j-clearify}/SKILL.md +9 -2
- package/skills/{close-story → j-close-story}/SKILL.md +92 -13
- package/skills/j-close-story/scripts/check-privatized.sh +345 -0
- package/skills/{close-story → j-close-story}/scripts/check-story-closeable.sh +1 -1
- package/skills/{close-story → j-close-story}/scripts/extract-task-diff-stats.sh +1 -1
- package/skills/{commit → j-commit}/SKILL.md +9 -2
- package/skills/j-continue/SKILL.md +36 -0
- package/skills/{deep-dive → j-deep-dive}/SKILL.md +9 -8
- package/skills/{dev-done → j-dev-done}/SKILL.md +11 -4
- package/skills/{dev-done → j-dev-done}/scripts/classify-commit-outcome.sh +4 -4
- package/skills/{distribute → j-distribute}/SKILL.md +17 -10
- package/skills/{distribute → j-distribute}/scripts/distribute-changes.sh +1 -1
- package/skills/{do → j-do}/SKILL.md +111 -14
- package/skills/j-doc/README.md +155 -0
- package/skills/{doc → j-doc}/SKILL.md +55 -18
- package/skills/j-doc/authoring-notes.md +72 -0
- package/skills/j-doc/scripts/resolve_last_update.py +149 -0
- package/skills/{doc-sync → j-doc-sync}/SKILL.md +9 -2
- package/skills/{dooo → j-dooo}/SKILL.md +9 -2
- package/skills/j-error/SKILL.md +36 -0
- package/skills/{evaluate → j-evaluate}/SKILL.md +9 -2
- package/skills/j-examplify/SKILL.md +49 -0
- package/skills/{help → j-help}/SKILL.md +9 -2
- package/skills/{idea → j-idea}/SKILL.md +10 -3
- package/skills/{idea → j-idea}/assets/idea_handoff_template.md +1 -1
- package/skills/{improve → j-improve}/SKILL.md +9 -2
- package/skills/{init → j-init}/SKILL.md +21 -8
- package/skills/j-init/assets/scope-thresholds_template.json +7 -0
- package/skills/j-jbp/SKILL.md +32 -0
- package/skills/j-lgtm/SKILL.md +28 -0
- package/skills/{pi-plan → j-pi-plan}/SKILL.md +10 -3
- package/skills/{proceed → j-proceed}/SKILL.md +9 -2
- package/skills/{publish → j-publish}/SKILL.md +47 -40
- package/skills/{publish → j-publish}/adapters/droplet.md +1 -1
- package/skills/{publish → j-publish}/adapters/mobile-ios.md +3 -3
- package/skills/{publish → j-publish}/adapters/npm-ci.md +29 -7
- package/skills/{publish → j-publish}/adapters/npm.md +8 -8
- package/skills/{publish → j-publish}/assets/ci-contract.md +2 -2
- package/skills/{publish → j-publish}/schemas/publish.schema.json +1 -1
- package/skills/{publish → j-publish}/scripts/npm_ci_pipeline.sh +21 -1
- package/skills/{publish → j-publish}/scripts/npm_stage_inspect.sh +34 -1
- package/skills/{publish → j-publish}/scripts/npm_stage_pipeline.sh +9 -4
- package/skills/{publish → j-publish}/scripts/publish_deploy.sh +4 -4
- package/skills/{publish → j-publish}/scripts/validate_npm_stage_env.sh +1 -1
- package/skills/{publish → j-publish}/wizards/droplet.md +1 -1
- package/skills/{publish → j-publish}/wizards/mobile-ios.md +1 -1
- package/skills/{publish → j-publish}/wizards/npm-ci.md +1 -1
- package/skills/{publish → j-publish}/wizards/npm.md +1 -1
- package/skills/{reconcile → j-reconcile}/SKILL.md +12 -5
- package/skills/{reconcile → j-reconcile}/scripts/detect-unlinked-code.sh +2 -2
- package/skills/{reconcile → j-reconcile}/scripts/resolve-reconcile-scope.sh +3 -3
- package/skills/{reconcile-origin → j-reconcile-origin}/SKILL.md +13 -6
- package/skills/{redo → j-redo}/SKILL.md +9 -2
- package/skills/{skillify → j-skillify}/SKILL.md +10 -3
- package/skills/{spinoff → j-spinoff}/SKILL.md +9 -2
- package/skills/{status → j-status}/SKILL.md +9 -2
- package/skills/j-todo/SKILL.md +92 -0
- package/skills/{todo → j-todo}/assets/todo_handoff_template.md +1 -1
- package/skills/j-todo/scripts/add_trivial_task.sh +216 -0
- package/skills/j-todo/scripts/update_story_tasks.py +87 -0
- package/skills/{uncharted → j-uncharted}/SKILL.md +35 -28
- package/skills/{uncharted → j-uncharted}/assets/UNDERSTANDING_DOC_TEMPLATE.md +2 -2
- package/skills/{uncharted → j-uncharted}/scripts/detect-dependencies.sh +1 -1
- package/skills/{uncharted → j-uncharted}/scripts/detect-tests.sh +1 -1
- package/skills/{uncharted → j-uncharted}/scripts/directory-triage.sh +3 -3
- package/skills/{uncharted → j-uncharted}/scripts/elicitation-state.sh +3 -3
- package/skills/{uncharted → j-uncharted}/scripts/enumerate-target.sh +1 -1
- package/skills/{uncharted → j-uncharted}/scripts/import-source.sh +1 -1
- package/skills/{uncharted → j-uncharted}/scripts/inspect-provenance.sh +1 -1
- package/skills/{uncharted → j-uncharted}/scripts/resolve-segment-target.sh +5 -5
- package/skills/{uncharted → j-uncharted}/scripts/run-engine.sh +1 -1
- package/skills/{uncharted → j-uncharted}/scripts/validate-proposed-items.sh +2 -2
- package/skills/{uncharted → j-uncharted}/scripts/write-backfilled-epics.sh +1 -1
- package/skills/j-wtf/SKILL.md +27 -0
- package/skills/jenga/SKILL.md +1 -1
- package/skills/jenga/scripts/render-confirmation.sh +55 -18
- package/skills/jenga-permission-level/SKILL.md +1 -1
- package/templates/SCRUM_BOARD_SCHEMA.md +33 -2
- package/templates/agent-context.md.tpl +32 -9
- package/templates/copilot-instructions.md.tpl +66 -11
- package/skills/continue/SKILL.md +0 -29
- package/skills/error/SKILL.md +0 -29
- package/skills/examplify/SKILL.md +0 -42
- package/skills/init/assets/scope-thresholds_template.json +0 -7
- package/skills/jbp/SKILL.md +0 -25
- package/skills/lgtm/SKILL.md +0 -21
- package/skills/todo/SKILL.md +0 -48
- package/skills/wtf/SKILL.md +0 -20
- /package/skills/{close-story → j-close-story}/scripts/compute-scope-divergence.sh +0 -0
- /package/skills/{close-story → j-close-story}/scripts/extract-diff-stats.sh +0 -0
- /package/skills/{close-story → j-close-story}/scripts/update-task-frontmatter.sh +0 -0
- /package/skills/{commit → j-commit}/assets/user_instructions_template.md +0 -0
- /package/skills/{distribute → j-distribute}/CONFIG_SCHEMA.md +0 -0
- /package/skills/{distribute → j-distribute}/scripts/check-version.sh +0 -0
- /package/skills/{distribute → j-distribute}/scripts/commit-version-bump.sh +0 -0
- /package/skills/{do → j-do}/assets/intent-vs-diff-prompt.md +0 -0
- /package/skills/{do → j-do}/assets/sender_template.json +0 -0
- /package/skills/{doc → j-doc}/assets/path-objectives.yaml +0 -0
- /package/skills/{doc-sync → j-doc-sync}/assets/default_excludes.txt +0 -0
- /package/skills/{doc-sync → j-doc-sync}/assets/doc_targets.md +0 -0
- /package/skills/{evaluate → j-evaluate}/assets/evaluation_invokation_template.yml +0 -0
- /package/skills/{evaluate → j-evaluate}/assets/evaluation_rapport_template.md +0 -0
- /package/skills/{idea → j-idea}/assets/idea_template.md +0 -0
- /package/skills/{init → j-init}/assets/.gitignore_template +0 -0
- /package/skills/{init → j-init}/assets/PROJECT_SUMMARY_template.md +0 -0
- /package/skills/{init → j-init}/assets/directory_structure.txt +0 -0
- /package/skills/{init → j-init}/assets/strategy_stub_template.md +0 -0
- /package/skills/{init → j-init}/assets/test-config_template.json +0 -0
- /package/skills/{init → j-init}/assets/workflow_template.json +0 -0
- /package/skills/{init → j-init}/scripts/apply-project-visibility.sh +0 -0
- /package/skills/{init → j-init}/scripts/detect-existing-codebase.sh +0 -0
- /package/skills/{init → j-init}/scripts/init.sh +0 -0
- /package/skills/{pi-plan → j-pi-plan}/assets/epic.json +0 -0
- /package/skills/{pi-plan → j-pi-plan}/assets/story_template.md +0 -0
- /package/skills/{publish → j-publish}/assets/ExportOptions.plist.template +0 -0
- /package/skills/{publish → j-publish}/assets/ownership-matrix.md +0 -0
- /package/skills/{publish → j-publish}/assets/publish.example.json +0 -0
- /package/skills/{publish → j-publish}/assets/publish.example.npm-ci.json +0 -0
- /package/skills/{publish → j-publish}/assets/publish.example.npm.json +0 -0
- /package/skills/{publish → j-publish}/assets/secrets-guide.md +0 -0
- /package/skills/{publish → j-publish}/schemas/fixtures/npm-ci-minimal.json +0 -0
- /package/skills/{publish → j-publish}/schemas/fixtures/npm-ci-with-empty-secrets.json +0 -0
- /package/skills/{publish → j-publish}/schemas/fixtures/npm-ci-with-workflow-path.json +0 -0
- /package/skills/{publish → j-publish}/scripts/check_target_config.sh +0 -0
- /package/skills/{publish → j-publish}/scripts/droplet_pipeline.sh +0 -0
- /package/skills/{publish → j-publish}/scripts/finalize_changelog.sh +0 -0
- /package/skills/{publish → j-publish}/scripts/generate_release_notes.sh +0 -0
- /package/skills/{publish → j-publish}/scripts/ios_pipeline.sh +0 -0
- /package/skills/{publish → j-publish}/scripts/npm_pipeline.sh +0 -0
- /package/skills/{publish → j-publish}/scripts/publish_common.sh +0 -0
- /package/skills/{publish → j-publish}/scripts/reconcile_tags.sh +0 -0
- /package/skills/{publish → j-publish}/scripts/run_gates.sh +0 -0
- /package/skills/{publish → j-publish}/scripts/setup_wizard.sh +0 -0
- /package/skills/{publish → j-publish}/scripts/show_history.sh +0 -0
- /package/skills/{publish → j-publish}/scripts/suggest_semver_bump.sh +0 -0
- /package/skills/{publish → j-publish}/scripts/validate_config.sh +0 -0
- /package/skills/{publish → j-publish}/scripts/validate_droplet_env.sh +0 -0
- /package/skills/{publish → j-publish}/scripts/validate_ios_env.sh +0 -0
- /package/skills/{publish → j-publish}/scripts/validate_npm_ci_env.sh +0 -0
- /package/skills/{publish → j-publish}/scripts/validate_npm_env.sh +0 -0
- /package/skills/{publish → j-publish}/scripts/write_ledger_entry.sh +0 -0
- /package/skills/{reconcile → j-reconcile}/assets/report_format.md +0 -0
- /package/skills/{reconcile-origin → j-reconcile-origin}/scripts/reconcile-origin.sh +0 -0
- /package/skills/{skillify → j-skillify}/assets/init-new/SKILL.md +0 -0
- /package/skills/{skillify → j-skillify}/assets/init-new/assets/.gitignore_template +0 -0
- /package/skills/{skillify → j-skillify}/assets/init-new/assets/PROJECT_SUMMARY_template.md +0 -0
- /package/skills/{skillify → j-skillify}/assets/init-new/assets/directory_structure.txt +0 -0
- /package/skills/{skillify → j-skillify}/assets/init-new/assets/test-config_template.json +0 -0
- /package/skills/{skillify → j-skillify}/assets/init-new/assets/workflow_template.json +0 -0
- /package/skills/{skillify → j-skillify}/assets/init-new/scripts/init.sh +0 -0
- /package/skills/{skillify → j-skillify}/assets/init-old/SKILL.md +0 -0
- /package/skills/{status → j-status}/assets/output_format.md +0 -0
- /package/skills/{todo → j-todo}/assets/todo_template.md +0 -0
- /package/skills/{uncharted → j-uncharted}/assets/SEGMENT_PROPOSAL_TEMPLATE.md +0 -0
- /package/skills/{uncharted → j-uncharted}/scripts/apply-subsystem-cap.sh +0 -0
- /package/skills/{uncharted → j-uncharted}/scripts/discover-subsystems.sh +0 -0
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Resolve /doc last_update provenance from scrum board annotations."""
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
|
|
6
|
+
import argparse
|
|
7
|
+
import json
|
|
8
|
+
import sys
|
|
9
|
+
from datetime import date
|
|
10
|
+
from pathlib import Path
|
|
11
|
+
from typing import Any
|
|
12
|
+
|
|
13
|
+
COMPLETED_STATUSES = {"Done", "Passed"}
|
|
14
|
+
BOARD_DIRS = (
|
|
15
|
+
("epic", Path("project/board/epics")),
|
|
16
|
+
("story", Path("project/board/stories")),
|
|
17
|
+
("task", Path("project/board/tasks")),
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def parse_args() -> argparse.Namespace:
|
|
22
|
+
parser = argparse.ArgumentParser(
|
|
23
|
+
description="Resolve the latest completed board date for a documentation target.",
|
|
24
|
+
)
|
|
25
|
+
parser.add_argument("target_path", help="Repo-relative documentation target path, e.g. README.md")
|
|
26
|
+
parser.add_argument(
|
|
27
|
+
"--root",
|
|
28
|
+
default=Path(__file__).resolve().parents[3],
|
|
29
|
+
type=Path,
|
|
30
|
+
help="Repository root containing project/board/",
|
|
31
|
+
)
|
|
32
|
+
return parser.parse_args()
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def parse_scalar(value: str) -> Any:
|
|
36
|
+
text = value.strip()
|
|
37
|
+
if text in {"", "null", "~"}:
|
|
38
|
+
return ""
|
|
39
|
+
if text.startswith("[") and text.endswith("]"):
|
|
40
|
+
inner = text[1:-1].strip()
|
|
41
|
+
if not inner:
|
|
42
|
+
return []
|
|
43
|
+
return [item.strip().strip("\"'") for item in inner.split(",") if item.strip()]
|
|
44
|
+
return text.strip("\"'")
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def parse_frontmatter(path: Path) -> dict[str, Any]:
|
|
48
|
+
text = path.read_text(encoding="utf-8")
|
|
49
|
+
if not text.startswith("---\n"):
|
|
50
|
+
raise ValueError("missing opening frontmatter delimiter")
|
|
51
|
+
parts = text.split("\n---\n", 1)
|
|
52
|
+
if len(parts) != 2:
|
|
53
|
+
raise ValueError("missing closing frontmatter delimiter")
|
|
54
|
+
|
|
55
|
+
lines = parts[0].splitlines()[1:]
|
|
56
|
+
data: dict[str, Any] = {}
|
|
57
|
+
current_key: str | None = None
|
|
58
|
+
|
|
59
|
+
for line in lines:
|
|
60
|
+
if not line.strip():
|
|
61
|
+
continue
|
|
62
|
+
if line.startswith(" - "):
|
|
63
|
+
if current_key is None:
|
|
64
|
+
raise ValueError(f"orphaned list item: {line.strip()}")
|
|
65
|
+
existing = data.get(current_key, "")
|
|
66
|
+
if existing == "":
|
|
67
|
+
existing = []
|
|
68
|
+
data[current_key] = existing
|
|
69
|
+
if not isinstance(existing, list):
|
|
70
|
+
raise ValueError(f"frontmatter key {current_key!r} is not a list")
|
|
71
|
+
existing.append(line[4:].strip().strip("\"'"))
|
|
72
|
+
continue
|
|
73
|
+
if ":" not in line:
|
|
74
|
+
raise ValueError(f"invalid frontmatter line: {line}")
|
|
75
|
+
key, raw_value = line.split(":", 1)
|
|
76
|
+
key = key.strip()
|
|
77
|
+
value = parse_scalar(raw_value)
|
|
78
|
+
data[key] = value
|
|
79
|
+
current_key = key if value == "" else None
|
|
80
|
+
|
|
81
|
+
return data
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
def iter_matches(root: Path, target_path: str):
|
|
85
|
+
for item_type, relative_dir in BOARD_DIRS:
|
|
86
|
+
board_dir = root / relative_dir
|
|
87
|
+
if not board_dir.exists():
|
|
88
|
+
continue
|
|
89
|
+
for path in sorted(board_dir.glob("*.md")):
|
|
90
|
+
try:
|
|
91
|
+
frontmatter = parse_frontmatter(path)
|
|
92
|
+
except Exception as exc: # pragma: no cover - defensive degradation
|
|
93
|
+
print(f"warning: skipping {path}: {exc}", file=sys.stderr)
|
|
94
|
+
continue
|
|
95
|
+
|
|
96
|
+
if frontmatter.get("status") not in COMPLETED_STATUSES:
|
|
97
|
+
continue
|
|
98
|
+
|
|
99
|
+
docs = frontmatter.get("docs")
|
|
100
|
+
if not isinstance(docs, list) or target_path not in docs:
|
|
101
|
+
continue
|
|
102
|
+
|
|
103
|
+
completed_raw = str(frontmatter.get("date_completed", "")).strip()
|
|
104
|
+
if not completed_raw:
|
|
105
|
+
print(
|
|
106
|
+
f"warning: skipping {path}: matching docs annotation without date_completed",
|
|
107
|
+
file=sys.stderr,
|
|
108
|
+
)
|
|
109
|
+
continue
|
|
110
|
+
|
|
111
|
+
try:
|
|
112
|
+
completed_on = date.fromisoformat(completed_raw)
|
|
113
|
+
except ValueError:
|
|
114
|
+
print(
|
|
115
|
+
f"warning: skipping {path}: invalid date_completed {completed_raw!r}",
|
|
116
|
+
file=sys.stderr,
|
|
117
|
+
)
|
|
118
|
+
continue
|
|
119
|
+
|
|
120
|
+
yield {
|
|
121
|
+
"id": frontmatter.get("id") or path.stem,
|
|
122
|
+
"type": item_type,
|
|
123
|
+
"status": frontmatter.get("status"),
|
|
124
|
+
"date_completed": completed_on.isoformat(),
|
|
125
|
+
"path": path.relative_to(root).as_posix(),
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
def main() -> int:
|
|
130
|
+
args = parse_args()
|
|
131
|
+
root = args.root.resolve()
|
|
132
|
+
matches = sorted(
|
|
133
|
+
iter_matches(root, args.target_path),
|
|
134
|
+
key=lambda item: (item["date_completed"], item["id"]),
|
|
135
|
+
)
|
|
136
|
+
last_update = matches[-1]["date_completed"] if matches else "unknown"
|
|
137
|
+
payload = {
|
|
138
|
+
"target_path": args.target_path,
|
|
139
|
+
"last_update": last_update,
|
|
140
|
+
"provenance_found": bool(matches),
|
|
141
|
+
"fallback": "unknown",
|
|
142
|
+
"matched_items": matches,
|
|
143
|
+
}
|
|
144
|
+
print(json.dumps(payload, ensure_ascii=False))
|
|
145
|
+
return 0
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
if __name__ == "__main__":
|
|
149
|
+
raise SystemExit(main())
|
|
@@ -1,18 +1,25 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: doc-sync
|
|
3
|
-
description: Compare the current state of a project with its documentation and update documentation to reflect changes. Accepts `update:`, `source:`, `exclude:`, and `minify:` arguments to control scope. Use when documentation may be out of date with implementation, or when the user asks to sync, refresh, update, or shrink docs.
|
|
2
|
+
name: j.doc-sync
|
|
3
|
+
description: Polyfill alias of the doc-sync skill under a collision-safe directory name. Identical behavior to /doc-sync — Compare the current state of a project with its documentation and update documentation to reflect changes. Accepts `update:`, `source:`, `exclude:`, and `minify:` arguments to control scope. Use when documentation may be out of date with implementation, or when the user asks to sync, refresh, update, or shrink docs. Use when the bare /doc-sync form is shadowed by another tool's own built-in command of the same name.
|
|
4
4
|
keywords:
|
|
5
5
|
- doc-sync
|
|
6
6
|
- documentation
|
|
7
7
|
- update docs
|
|
8
8
|
- sync docs
|
|
9
|
+
- j-doc-sync
|
|
10
|
+
- polyfill
|
|
9
11
|
examples:
|
|
10
12
|
- "update the documentation"
|
|
11
13
|
- "sync docs with current state"
|
|
14
|
+
- "j-doc-sync"
|
|
12
15
|
---
|
|
13
16
|
|
|
14
17
|
# Doc-Sync — Keep Documentation in Sync with the Codebase
|
|
15
18
|
|
|
19
|
+
This skill is a literal-directory-name duplicate of `skills/doc-sync/`. It exists so that `/j-doc-sync` (and `j.j-doc-sync`) give a guaranteed-unshadowed way to reach the same flow as `/doc-sync`, even if a host tool's own built-in command of the same name would otherwise shadow or override the bare `/doc-sync` alias (Claude Code's native skill resolution is a literal-string, directory-name-based match — see `docs/skill-authoring.md`'s "Invocation Convention").
|
|
20
|
+
|
|
21
|
+
This file is generated/synced by `scripts/generate-j-alias.sh doc-sync` from `skills/doc-sync/SKILL.md` — do not hand-edit it; re-run the generator instead to pick up source changes.
|
|
22
|
+
|
|
16
23
|
## What this skill does
|
|
17
24
|
|
|
18
25
|
Analyses project source files, compares them against existing documentation, and updates any documentation that is stale, incomplete, or missing. Can be scoped with arguments to focus on specific files or exclude noise.
|
|
@@ -1,21 +1,28 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: dooo
|
|
3
|
-
description: Parallel execution orchestrator. Calls /do to start implementations via sub-agents, then loops back to the board to identify and offer parallelisable tasks until the user selects "Done".
|
|
2
|
+
name: j.dooo
|
|
3
|
+
description: Polyfill alias of the dooo skill under a collision-safe directory name. Identical behavior to /dooo — Parallel execution orchestrator. Calls /do to start implementations via sub-agents, then loops back to the board to identify and offer parallelisable tasks until the user selects "Done". Use when the bare /dooo form is shadowed by another tool's own built-in command of the same name.
|
|
4
4
|
keywords:
|
|
5
5
|
- dooo
|
|
6
6
|
- parallel
|
|
7
7
|
- batch
|
|
8
8
|
- multiple tasks
|
|
9
9
|
- orchestrate
|
|
10
|
+
- j-dooo
|
|
11
|
+
- polyfill
|
|
10
12
|
examples:
|
|
11
13
|
- "run all pending tasks in parallel"
|
|
12
14
|
- "execute multiple tasks at once"
|
|
15
|
+
- "j-dooo"
|
|
13
16
|
metadata:
|
|
14
17
|
prefered_agent: scrum-master
|
|
15
18
|
---
|
|
16
19
|
|
|
17
20
|
# Dooo — Parallel Execution Orchestrator
|
|
18
21
|
|
|
22
|
+
This skill is a literal-directory-name duplicate of `skills/dooo/`. It exists so that `/j-dooo` (and `j.j-dooo`) give a guaranteed-unshadowed way to reach the same flow as `/dooo`, even if a host tool's own built-in command of the same name would otherwise shadow or override the bare `/dooo` alias (Claude Code's native skill resolution is a literal-string, directory-name-based match — see `docs/skill-authoring.md`'s "Invocation Convention").
|
|
23
|
+
|
|
24
|
+
This file is generated/synced by `scripts/generate-j-alias.sh dooo` from `skills/dooo/SKILL.md` — do not hand-edit it; re-run the generator instead to pick up source changes.
|
|
25
|
+
|
|
19
26
|
## Instructions
|
|
20
27
|
|
|
21
28
|
### 1. Invoke `/do`
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: j.error
|
|
3
|
+
description: Polyfill alias of the error skill under a collision-safe directory name. Identical behavior to /error — Guided troubleshooting flow that gathers context about an error — where it occurs, what was attempted, what went wrong, and what was expected. Use when the bare /error form is shadowed by another tool's own built-in command of the same name.
|
|
4
|
+
keywords:
|
|
5
|
+
- error
|
|
6
|
+
- bug
|
|
7
|
+
- fix
|
|
8
|
+
- troubleshoot
|
|
9
|
+
- debug
|
|
10
|
+
- broken
|
|
11
|
+
- j-error
|
|
12
|
+
- polyfill
|
|
13
|
+
examples:
|
|
14
|
+
- "I'm getting an error"
|
|
15
|
+
- "help me fix this bug"
|
|
16
|
+
- "j-error"
|
|
17
|
+
metadata:
|
|
18
|
+
prefered_agent: tester
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# Error — Guided Troubleshooting
|
|
22
|
+
|
|
23
|
+
This skill is a literal-directory-name duplicate of `skills/error/`. It exists so that `/j-error` (and `j.j-error`) give a guaranteed-unshadowed way to reach the same flow as `/error`, even if a host tool's own built-in command of the same name would otherwise shadow or override the bare `/error` alias (Claude Code's native skill resolution is a literal-string, directory-name-based match — see `docs/skill-authoring.md`'s "Invocation Convention").
|
|
24
|
+
|
|
25
|
+
This file is generated/synced by `scripts/generate-j-alias.sh error` from `skills/error/SKILL.md` — do not hand-edit it; re-run the generator instead to pick up source changes.
|
|
26
|
+
|
|
27
|
+
## Instructions
|
|
28
|
+
|
|
29
|
+
Ask the following questions to understand the background of the error:
|
|
30
|
+
|
|
31
|
+
1. Where does the error occur?
|
|
32
|
+
2. What are you trying to do?
|
|
33
|
+
3. What went wrong?
|
|
34
|
+
4. What was the expected outcome?
|
|
35
|
+
|
|
36
|
+
Then use the answers to investigate and resolve the issue by creating a issue using the /todo skill.
|
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: evaluate
|
|
3
|
-
description: Analyzes example files against a target goal and produces a structured evaluation rapport.
|
|
2
|
+
name: j.evaluate
|
|
3
|
+
description: Polyfill alias of the evaluate skill under a collision-safe directory name. Identical behavior to /evaluate — Analyzes example files against a target goal and produces a structured evaluation rapport. Use when the bare /evaluate form is shadowed by another tool's own built-in command of the same name.
|
|
4
|
+
keywords:
|
|
5
|
+
- j-evaluate
|
|
6
|
+
- polyfill
|
|
4
7
|
---
|
|
5
8
|
|
|
6
9
|
# Evaluate
|
|
7
10
|
|
|
11
|
+
This skill is a literal-directory-name duplicate of `skills/evaluate/`. It exists so that `/j-evaluate` (and `j.j-evaluate`) give a guaranteed-unshadowed way to reach the same flow as `/evaluate`, even if a host tool's own built-in command of the same name would otherwise shadow or override the bare `/evaluate` alias (Claude Code's native skill resolution is a literal-string, directory-name-based match — see `docs/skill-authoring.md`'s "Invocation Convention").
|
|
12
|
+
|
|
13
|
+
This file is generated/synced by `scripts/generate-j-alias.sh evaluate` from `skills/evaluate/SKILL.md` — do not hand-edit it; re-run the generator instead to pick up source changes.
|
|
14
|
+
|
|
8
15
|
## Input
|
|
9
16
|
|
|
10
17
|
Expects a filled `eval_invokation_template.yml` with:
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: j.examplify
|
|
3
|
+
description: Polyfill alias of the examplify skill under a collision-safe directory name. Identical behavior to /examplify — Explains concepts, features, use cases, and patterns based on provided context — a description, scenario, code snippet, or file. Use when the user wants to understand what something is, how it works, when to use it, or wants a concrete example. Use when the bare /examplify form is shadowed by another tool's own built-in command of the same name.
|
|
4
|
+
keywords:
|
|
5
|
+
- examplify
|
|
6
|
+
- explain
|
|
7
|
+
- example
|
|
8
|
+
- how does
|
|
9
|
+
- understand
|
|
10
|
+
- j-examplify
|
|
11
|
+
- polyfill
|
|
12
|
+
examples:
|
|
13
|
+
- "explain how this works"
|
|
14
|
+
- "give me an example of X"
|
|
15
|
+
- "j-examplify"
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# Concept Explainer
|
|
19
|
+
|
|
20
|
+
This skill is a literal-directory-name duplicate of `skills/examplify/`. It exists so that `/j-examplify` (and `j.j-examplify`) give a guaranteed-unshadowed way to reach the same flow as `/examplify`, even if a host tool's own built-in command of the same name would otherwise shadow or override the bare `/examplify` alias (Claude Code's native skill resolution is a literal-string, directory-name-based match — see `docs/skill-authoring.md`'s "Invocation Convention").
|
|
21
|
+
|
|
22
|
+
This file is generated/synced by `scripts/generate-j-alias.sh examplify` from `skills/examplify/SKILL.md` — do not hand-edit it; re-run the generator instead to pick up source changes.
|
|
23
|
+
|
|
24
|
+
## Instructions
|
|
25
|
+
|
|
26
|
+
If the context is unclear or too broad, ask one focused clarifying question before proceeding. Otherwise, infer and proceed.
|
|
27
|
+
|
|
28
|
+
Explain the concept by covering:
|
|
29
|
+
|
|
30
|
+
1. **What it is** — a plain-language definition
|
|
31
|
+
2. **Why it exists** — the problem it solves
|
|
32
|
+
3. **How it works** — core mechanics
|
|
33
|
+
4. **When to use it** — and when not to
|
|
34
|
+
5. **Example(s)** — grounded in the user's context; show a before/after when relevant
|
|
35
|
+
|
|
36
|
+
After delivering the explanation, save a copy to:
|
|
37
|
+
`project/documentation/examples/<concept_and_context>.md`
|
|
38
|
+
|
|
39
|
+
Derive the filename from the concept + context (lowercased, hyphenated). Tell the user where the file was saved.
|
|
40
|
+
|
|
41
|
+
## Follow-up
|
|
42
|
+
|
|
43
|
+
If further discussion reveals new information about the topic — a new use case, correction, or better example — ask the user:
|
|
44
|
+
|
|
45
|
+
> "That adds something new to what we covered — want me to update the saved file?"
|
|
46
|
+
1. Yes
|
|
47
|
+
2. No
|
|
48
|
+
|
|
49
|
+
If yes, append the new content under an `## Additional Notes` section. Do not overwrite the original.
|
|
@@ -1,19 +1,26 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: help
|
|
3
|
-
description: List all available skills with a short description of what each one does. Also use this skill when the user wants to know what commands or skills are available in the project.
|
|
2
|
+
name: j.help
|
|
3
|
+
description: Polyfill alias of the help skill under a collision-safe directory name. Identical behavior to /help — List all available skills with a short description of what each one does. Also use this skill when the user wants to know what commands or skills are available in the project. Use when the bare /help form is shadowed by another tool's own built-in command of the same name.
|
|
4
4
|
keywords:
|
|
5
5
|
- help
|
|
6
6
|
- skills
|
|
7
7
|
- commands
|
|
8
8
|
- what can you do
|
|
9
9
|
- list skills
|
|
10
|
+
- j-help
|
|
11
|
+
- polyfill
|
|
10
12
|
examples:
|
|
11
13
|
- "what skills are available?"
|
|
12
14
|
- "show me all commands"
|
|
15
|
+
- "j-help"
|
|
13
16
|
---
|
|
14
17
|
|
|
15
18
|
# Help — List Available Skills
|
|
16
19
|
|
|
20
|
+
This skill is a literal-directory-name duplicate of `skills/help/`. It exists so that `/j-help` (and `j.j-help`) give a guaranteed-unshadowed way to reach the same flow as `/help`, even if a host tool's own built-in command of the same name would otherwise shadow or override the bare `/help` alias (Claude Code's native skill resolution is a literal-string, directory-name-based match — see `docs/skill-authoring.md`'s "Invocation Convention").
|
|
21
|
+
|
|
22
|
+
This file is generated/synced by `scripts/generate-j-alias.sh help` from `skills/help/SKILL.md` — do not hand-edit it; re-run the generator instead to pick up source changes.
|
|
23
|
+
|
|
17
24
|
## Instructions
|
|
18
25
|
|
|
19
26
|
List all available skills (from the current skill list) with a short description of what each one does. Format the output as a table with columns for the slash command and its description.
|
|
@@ -1,25 +1,32 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: idea
|
|
3
|
-
description: Capture a loosely-defined idea to project/ideas.md — a lightweight, "maybe someday" log with no board or promotion overhead.
|
|
2
|
+
name: j.idea
|
|
3
|
+
description: Polyfill alias of the idea skill under a collision-safe directory name. Identical behavior to /idea — Capture a loosely-defined idea to project/ideas.md — a lightweight, "maybe someday" log with no board or promotion overhead. Use when the bare /idea form is shadowed by another tool's own built-in command of the same name.
|
|
4
4
|
keywords:
|
|
5
5
|
- idea
|
|
6
6
|
- capture idea
|
|
7
7
|
- log idea
|
|
8
8
|
- brain dump
|
|
9
9
|
- maybe someday
|
|
10
|
+
- j-idea
|
|
11
|
+
- polyfill
|
|
10
12
|
examples:
|
|
11
13
|
- "capture this as an idea"
|
|
12
14
|
- "log this idea for later"
|
|
13
15
|
- "I have a rough idea I want to jot down"
|
|
16
|
+
- "j-idea"
|
|
14
17
|
metadata:
|
|
15
18
|
prefered_agent: scrum-master
|
|
16
19
|
---
|
|
17
20
|
|
|
18
21
|
# Idea — Lightweight Idea Capture
|
|
19
22
|
|
|
23
|
+
This skill is a literal-directory-name duplicate of `skills/idea/`. It exists so that `/j-idea` (and `j.j-idea`) give a guaranteed-unshadowed way to reach the same flow as `/idea`, even if a host tool's own built-in command of the same name would otherwise shadow or override the bare `/idea` alias (Claude Code's native skill resolution is a literal-string, directory-name-based match — see `docs/skill-authoring.md`'s "Invocation Convention").
|
|
24
|
+
|
|
25
|
+
This file is generated/synced by `scripts/generate-j-alias.sh idea` from `skills/idea/SKILL.md` — do not hand-edit it; re-run the generator instead to pick up source changes.
|
|
26
|
+
|
|
20
27
|
## Instructions
|
|
21
28
|
|
|
22
|
-
1. **Ensure `project/ideas.md` exists** — If it doesn't exist, it will be auto-created by `idea_manager.sh` from `skills/idea/assets/idea_template.md` — no manual action needed.
|
|
29
|
+
1. **Ensure `project/ideas.md` exists** — If it doesn't exist, it will be auto-created by `idea_manager.sh` from `skills/j-idea/assets/idea_template.md` — no manual action needed.
|
|
23
30
|
|
|
24
31
|
2. **Ask the user about the idea:**
|
|
25
32
|
- What's the idea?
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
<!-- PLACEHOLDER: what this idea is trying to achieve -->
|
|
14
14
|
|
|
15
15
|
## Affected Files or Scope
|
|
16
|
-
<!-- PLACEHOLDER: which files, modules, or areas are involved, e.g. src/auth/, skills/idea/ -->
|
|
16
|
+
<!-- PLACEHOLDER: which files, modules, or areas are involved, e.g. src/auth/, skills/j-idea/ -->
|
|
17
17
|
|
|
18
18
|
## Intended Approach
|
|
19
19
|
<!-- PLACEHOLDER: step-by-step or high-level approach to the work -->
|
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: improve
|
|
3
|
-
description: A skill for analyzing a codebase and producing a structured improvement plan toward a defined goal.
|
|
2
|
+
name: j.improve
|
|
3
|
+
description: Polyfill alias of the improve skill under a collision-safe directory name. Identical behavior to /improve — A skill for analyzing a codebase and producing a structured improvement plan toward a defined goal. Use when the bare /improve form is shadowed by another tool's own built-in command of the same name.
|
|
4
|
+
keywords:
|
|
5
|
+
- j-improve
|
|
6
|
+
- polyfill
|
|
4
7
|
---
|
|
5
8
|
|
|
6
9
|
# Improve
|
|
7
10
|
|
|
11
|
+
This skill is a literal-directory-name duplicate of `skills/improve/`. It exists so that `/j-improve` (and `j.j-improve`) give a guaranteed-unshadowed way to reach the same flow as `/improve`, even if a host tool's own built-in command of the same name would otherwise shadow or override the bare `/improve` alias (Claude Code's native skill resolution is a literal-string, directory-name-based match — see `docs/skill-authoring.md`'s "Invocation Convention").
|
|
12
|
+
|
|
13
|
+
This file is generated/synced by `scripts/generate-j-alias.sh improve` from `skills/improve/SKILL.md` — do not hand-edit it; re-run the generator instead to pick up source changes.
|
|
14
|
+
|
|
8
15
|
## Instructions
|
|
9
16
|
|
|
10
17
|
Before doing anything, check the attached description for an explicit or implicit goal.
|
|
@@ -1,18 +1,31 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: init
|
|
3
|
-
description:
|
|
2
|
+
name: j.init
|
|
3
|
+
description: Polyfill alias of the init skill under a collision-safe directory name. Identical behavior to /init — initializes a new project with the standard directory structure, PROJECT_SUMMARY.md, workflow.json, git repo, and gitignore. Use when the built-in "/init" command (e.g. GH Copilot's own init) shadows Jenga's /init alias.
|
|
4
4
|
keywords:
|
|
5
5
|
- init
|
|
6
6
|
- initialize
|
|
7
7
|
- setup
|
|
8
8
|
- new project
|
|
9
9
|
- scaffold
|
|
10
|
+
- j-init
|
|
11
|
+
- polyfill
|
|
10
12
|
examples:
|
|
11
13
|
- "initialize a new project"
|
|
12
14
|
- "set up a new workspace"
|
|
15
|
+
- "j-init"
|
|
13
16
|
---
|
|
14
17
|
|
|
15
|
-
# Init — Project Setup
|
|
18
|
+
# J-Init — Project Setup (polyfill alias of Init)
|
|
19
|
+
|
|
20
|
+
This skill is a literal-directory-name duplicate of `skills/init/`. It exists because
|
|
21
|
+
some host tools/harnesses (e.g. GH Copilot) ship their own built-in command literally
|
|
22
|
+
named `/init`, which can shadow or override Jenga AI's own `/init` alias (Claude Code's
|
|
23
|
+
native skill resolution is a literal-string, directory-name-based match — see
|
|
24
|
+
`docs/skill-authoring.md`'s "Invocation Convention"). `/j-init` (and `j.j-init`) give
|
|
25
|
+
users a guaranteed-unshadowed way to reach the exact same setup flow.
|
|
26
|
+
|
|
27
|
+
Keep this file's instructions in lockstep with `skills/init/SKILL.md` — any change made
|
|
28
|
+
there should be mirrored here.
|
|
16
29
|
|
|
17
30
|
## Instructions
|
|
18
31
|
|
|
@@ -24,7 +37,7 @@ Before asking anything or scaffolding anything, classify the target directory
|
|
|
24
37
|
(the current directory) by running the detection script:
|
|
25
38
|
|
|
26
39
|
```bash
|
|
27
|
-
skills/init/scripts/detect-existing-codebase.sh .
|
|
40
|
+
skills/j-init/scripts/detect-existing-codebase.sh .
|
|
28
41
|
```
|
|
29
42
|
|
|
30
43
|
It prints exactly one verdict on stdout:
|
|
@@ -97,10 +110,10 @@ of the mechanical work.
|
|
|
97
110
|
### 3. Run the scaffold script
|
|
98
111
|
|
|
99
112
|
`init.sh` is not guaranteed to live at a single fixed path: in a project that
|
|
100
|
-
installed Jenga via npm, it was mirrored to `.claude/skills/init/scripts/`
|
|
101
|
-
(Claude Code) and `.agents/skills/init/scripts/` (Copilot/other agents) by
|
|
113
|
+
installed Jenga via npm, it was mirrored to `.claude/skills/j-init/scripts/`
|
|
114
|
+
(Claude Code) and `.agents/skills/j-init/scripts/` (Copilot/other agents) by
|
|
102
115
|
`postinstall.js`, and neither of those exists yet in this framework's own
|
|
103
|
-
source checkout, where it lives at the bare `skills/init/scripts/` path
|
|
116
|
+
source checkout, where it lives at the bare `skills/j-init/scripts/` path
|
|
104
117
|
instead. This step runs before `CLAUDE.md`/`AGENTS.md` exist, so it cannot
|
|
105
118
|
rely on either file's routing instructions to resolve the path — it must
|
|
106
119
|
locate its own script directly. Execute the init script from the project
|
|
@@ -108,7 +121,7 @@ root, passing the choice from step 2:
|
|
|
108
121
|
|
|
109
122
|
```bash
|
|
110
123
|
INIT_SCRIPT=""
|
|
111
|
-
for candidate in .claude/skills/init/scripts/init.sh .agents/skills/init/scripts/init.sh skills/init/scripts/init.sh; do
|
|
124
|
+
for candidate in .claude/skills/j-init/scripts/init.sh .agents/skills/j-init/scripts/init.sh skills/j-init/scripts/init.sh; do
|
|
112
125
|
[[ -f "$candidate" ]] && { INIT_SCRIPT="$candidate"; break; }
|
|
113
126
|
done
|
|
114
127
|
if [[ -z "$INIT_SCRIPT" ]]; then
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: j.jbp
|
|
3
|
+
description: Polyfill alias of the jbp skill under a collision-safe directory name. Identical behavior to /jbp — Scaffold the project using the JengaBasePlate boilerplate repo template from https://github.com/samwelmunga/JengaBasePlate.git. Use when the bare /jbp form is shadowed by another tool's own built-in command of the same name.
|
|
4
|
+
keywords:
|
|
5
|
+
- jbp
|
|
6
|
+
- boilerplate
|
|
7
|
+
- scaffold
|
|
8
|
+
- template
|
|
9
|
+
- jenga base
|
|
10
|
+
- j-jbp
|
|
11
|
+
- polyfill
|
|
12
|
+
examples:
|
|
13
|
+
- "scaffold with JengaBasePlate"
|
|
14
|
+
- "set up the base template"
|
|
15
|
+
- "j-jbp"
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# JBP — JengaBasePlate Scaffold
|
|
19
|
+
|
|
20
|
+
This skill is a literal-directory-name duplicate of `skills/jbp/`. It exists so that `/j-jbp` (and `j.j-jbp`) give a guaranteed-unshadowed way to reach the same flow as `/jbp`, even if a host tool's own built-in command of the same name would otherwise shadow or override the bare `/jbp` alias (Claude Code's native skill resolution is a literal-string, directory-name-based match — see `docs/skill-authoring.md`'s "Invocation Convention").
|
|
21
|
+
|
|
22
|
+
This file is generated/synced by `scripts/generate-j-alias.sh jbp` from `skills/jbp/SKILL.md` — do not hand-edit it; re-run the generator instead to pick up source changes.
|
|
23
|
+
|
|
24
|
+
## Instructions
|
|
25
|
+
|
|
26
|
+
Use the following repo as the boilerplate framework for this project:
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
https://github.com/samwelmunga/JengaBasePlate.git
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Clone or pull the template and apply its structure to the current project.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: j.lgtm
|
|
3
|
+
description: Polyfill alias of the lgtm skill under a collision-safe directory name. Identical behavior to /lgtm — Approve and commit the current work, then continue to the next task. Shortcut that chains /commit followed by /continue. Use when the bare /lgtm form is shadowed by another tool's own built-in command of the same name.
|
|
4
|
+
keywords:
|
|
5
|
+
- lgtm
|
|
6
|
+
- approve
|
|
7
|
+
- looks good
|
|
8
|
+
- done
|
|
9
|
+
- commit and continue
|
|
10
|
+
- j-lgtm
|
|
11
|
+
- polyfill
|
|
12
|
+
examples:
|
|
13
|
+
- "lgtm, commit this"
|
|
14
|
+
- "looks good, move on"
|
|
15
|
+
- "j-lgtm"
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# LGTM — Approve, Commit, and Continue
|
|
19
|
+
|
|
20
|
+
This skill is a literal-directory-name duplicate of `skills/lgtm/`. It exists so that `/j-lgtm` (and `j.j-lgtm`) give a guaranteed-unshadowed way to reach the same flow as `/lgtm`, even if a host tool's own built-in command of the same name would otherwise shadow or override the bare `/lgtm` alias (Claude Code's native skill resolution is a literal-string, directory-name-based match — see `docs/skill-authoring.md`'s "Invocation Convention").
|
|
21
|
+
|
|
22
|
+
This file is generated/synced by `scripts/generate-j-alias.sh lgtm` from `skills/lgtm/SKILL.md` — do not hand-edit it; re-run the generator instead to pick up source changes.
|
|
23
|
+
|
|
24
|
+
## Instructions
|
|
25
|
+
|
|
26
|
+
1. Invoke the `/commit` skill and wait for it to finish.
|
|
27
|
+
|
|
28
|
+
2. If the current workflow is part of a `/do` execution, return to that workflow. Otherwise, invoke the `/continue` skill.
|
|
@@ -1,21 +1,28 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: pi-plan
|
|
3
|
-
description: Define or expand project Epics in PROJECT_SUMMARY.md. Use this at the start of a project to establish its foundation, AND whenever the user wants to add major new features, plan a significant new area of work, or make epic-level changes to an existing project. Trigger whenever you hear things like "new feature area", "big change", "new epic", "expand the project", "add a major capability", or "plan a new phase" — even mid-project.
|
|
2
|
+
name: j.pi-plan
|
|
3
|
+
description: Polyfill alias of the pi-plan skill under a collision-safe directory name. Identical behavior to /pi-plan — Define or expand project Epics in PROJECT_SUMMARY.md. Use this at the start of a project to establish its foundation, AND whenever the user wants to add major new features, plan a significant new area of work, or make epic-level changes to an existing project. Trigger whenever you hear things like "new feature area", "big change", "new epic", "expand the project", "add a major capability", or "plan a new phase" — even mid-project. Use when the bare /pi-plan form is shadowed by another tool's own built-in command of the same name.
|
|
4
4
|
keywords:
|
|
5
5
|
- epic
|
|
6
6
|
- template
|
|
7
7
|
- expand
|
|
8
8
|
- new feature area
|
|
9
9
|
- project structure
|
|
10
|
+
- j-pi-plan
|
|
11
|
+
- polyfill
|
|
10
12
|
examples:
|
|
11
13
|
- "add a new epic for X"
|
|
12
14
|
- "expand the project with a new feature area"
|
|
15
|
+
- "j-pi-plan"
|
|
13
16
|
metadata:
|
|
14
17
|
prefered_agent: scrum-master
|
|
15
18
|
---
|
|
16
19
|
|
|
17
20
|
# Pi-plan — Define and Expand Project Epics
|
|
18
21
|
|
|
22
|
+
This skill is a literal-directory-name duplicate of `skills/pi-plan/`. It exists so that `/j-pi-plan` (and `j.j-pi-plan`) give a guaranteed-unshadowed way to reach the same flow as `/pi-plan`, even if a host tool's own built-in command of the same name would otherwise shadow or override the bare `/pi-plan` alias (Claude Code's native skill resolution is a literal-string, directory-name-based match — see `docs/skill-authoring.md`'s "Invocation Convention").
|
|
23
|
+
|
|
24
|
+
This file is generated/synced by `scripts/generate-j-alias.sh pi-plan` from `skills/pi-plan/SKILL.md` — do not hand-edit it; re-run the generator instead to pick up source changes.
|
|
25
|
+
|
|
19
26
|
## When to use this skill
|
|
20
27
|
|
|
21
28
|
- **New project**: Gather project description and goals, then define the initial set of Epics.
|
|
@@ -59,4 +66,4 @@ Story files created under `project/board/stories/` should follow `./assets/story
|
|
|
59
66
|
|
|
60
67
|
4. **Define new Epics** — Draft one or more new Epic objects using the same schema as above, then append them to the existing Epics list in `project/PROJECT_SUMMARY.md`. Do not modify existing Epics unless the user explicitly asks.
|
|
61
68
|
|
|
62
|
-
5. **Confirm before writing** — Show the user the proposed new Epic(s) and get confirmation before updating the file.
|
|
69
|
+
5. **Confirm before writing** — Show the user the proposed new Epic(s) and get confirmation before updating the file.
|
|
@@ -1,20 +1,27 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: proceed
|
|
3
|
-
description: Review project progress by checking epics and stories, optionally consulting PROJECT_SUMMARY.md and WARP.md, then continue executing the project plan.
|
|
2
|
+
name: j.proceed
|
|
3
|
+
description: Polyfill alias of the proceed skill under a collision-safe directory name. Identical behavior to /proceed — Review project progress by checking epics and stories, optionally consulting PROJECT_SUMMARY.md and WARP.md, then continue executing the project plan. Use when the bare /proceed form is shadowed by another tool's own built-in command of the same name.
|
|
4
4
|
keywords:
|
|
5
5
|
- proceed
|
|
6
6
|
- review progress
|
|
7
7
|
- check epics
|
|
8
8
|
- continue executing
|
|
9
|
+
- j-proceed
|
|
10
|
+
- polyfill
|
|
9
11
|
examples:
|
|
10
12
|
- "proceed with the plan"
|
|
11
13
|
- "review progress and continue"
|
|
14
|
+
- "j-proceed"
|
|
12
15
|
metadata:
|
|
13
16
|
prefered_agent: scrum-master
|
|
14
17
|
---
|
|
15
18
|
|
|
16
19
|
# Proceed — Resume Project Execution
|
|
17
20
|
|
|
21
|
+
This skill is a literal-directory-name duplicate of `skills/proceed/`. It exists so that `/j-proceed` (and `j.j-proceed`) give a guaranteed-unshadowed way to reach the same flow as `/proceed`, even if a host tool's own built-in command of the same name would otherwise shadow or override the bare `/proceed` alias (Claude Code's native skill resolution is a literal-string, directory-name-based match — see `docs/skill-authoring.md`'s "Invocation Convention").
|
|
22
|
+
|
|
23
|
+
This file is generated/synced by `scripts/generate-j-alias.sh proceed` from `skills/proceed/SKILL.md` — do not hand-edit it; re-run the generator instead to pick up source changes.
|
|
24
|
+
|
|
18
25
|
## Instructions
|
|
19
26
|
|
|
20
27
|
1. **Assess progress** — Read `project/PROJECT_SUMMARY.md`, then check `project/board/epics/`, `project/board/stories/`, and `project/board/tasks/` to determine how far the project has come and what is outstanding.
|