@tekyzinc/gsd-t 2.70.12 → 2.70.13

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/CHANGELOG.md CHANGED
@@ -2,6 +2,14 @@
2
2
 
3
3
  All notable changes to GSD-T are documented here. Updated with each release.
4
4
 
5
+ ## [2.70.13] - 2026-04-06
6
+
7
+ ### Changed (gsd-t-init, gsd-t-init-scan-setup)
8
+ - **Auto-create project directory + GitHub repo** — both `gsd-t-init` and `gsd-t-init-scan-setup` now create the project directory under a configurable base path and auto-create a private GitHub repo via `gh` CLI when a project name is provided as an argument.
9
+ - **Configurable base directory** — `~/.claude/.gsd-t-config` stores `projects_dir` (e.g., `/Users/david/projects`). Set once, never asked again. New projects are created at `{projects_dir}/{project-name}`.
10
+ - **Configurable GitHub org** — `~/.claude/.gsd-t-config` stores `github_org` (e.g., `Tekyz-Inc`). When set, repos are created under the org (`gh repo create {org}/{name}`). When not set, repos are created under the user's personal account.
11
+ - Existing project detection: if the current directory already has code/config files, Step 0 is skipped entirely — no behavior change for existing projects.
12
+
5
13
  ## [2.70.12] - 2026-04-06
6
14
 
7
15
  ### Added (design pipeline — element count reconciliation)
@@ -6,27 +6,54 @@ Can be run from anywhere — does not require being in the project folder first.
6
6
 
7
7
  ## Step 1: Project Directory
8
8
 
9
- First, ask: **"Is `{current directory name}` your project root folder?"**
9
+ ### 1a. Resolve the base projects directory (for new projects)
10
10
 
11
- - **Yes** Stay here and continue to Step 2
12
- - **No** → Ask: "What's the project folder name?" (or use `$ARGUMENTS` if provided)
13
- 1. Check if the folder exists in the current directory
14
- - **Exists** → `cd` into it
15
- - **Does not exist** → Create it, then `cd` into it
11
+ If `$ARGUMENTS` includes a project name:
16
12
 
17
- If `$ARGUMENTS` includes a folder/project name, skip the question and use it directly.
13
+ 1. Check `~/.claude/.gsd-t-config` for settings:
14
+ ```
15
+ # ~/.claude/.gsd-t-config format (one key=value per line):
16
+ projects_dir=/Users/username/projects
17
+ github_org=MyOrg
18
+ ```
19
+ - If `projects_dir` is set → use `{projects_dir}/{project-name}` as the target
20
+ - If not set → ask: "Where should new projects be created? (e.g., /Users/you/projects)"
21
+ Save their answer to `~/.claude/.gsd-t-config` as `projects_dir={path}`
22
+
23
+ 2. Check if the target directory exists:
24
+ - **Exists with files** → `cd` into it (existing project)
25
+ - **Exists but empty** → `cd` into it (new project)
26
+ - **Does not exist** → `mkdir -p {target}` then `cd` into it (new project)
27
+
28
+ If NO `$ARGUMENTS` provided, ask: **"Is `{current directory name}` your project root folder?"**
29
+ - **Yes** → Stay here
30
+ - **No** → Ask for the project name, then apply the resolution above
18
31
 
19
32
  All subsequent steps run from inside the project directory.
20
33
 
21
- ## Step 2: Git Repository Check
34
+ ## Step 2: Git Repository + GitHub Setup
22
35
 
23
36
  1. Check if the directory is inside a git repo: `git rev-parse --is-inside-work-tree`
24
- - **Not a git repo** → Run `git init`
37
+ - **Not a git repo** → Run `git init && git checkout -b main`
25
38
  2. Check for an existing remote: `git remote -v`
26
- - **No remote found** → Ask the user for the GitHub repository URL, then run:
27
- ```
28
- git remote add origin {url}
29
- ```
39
+ - **No remote found** → Try to create one automatically:
40
+ - Check if `gh` CLI is available and authenticated: `gh auth status`
41
+ - If YES:
42
+ - Check `~/.claude/.gsd-t-config` for `github_org` setting
43
+ - If `github_org` is set:
44
+ ```bash
45
+ gh repo create {github_org}/{project-name} --private --source=. --push
46
+ ```
47
+ Log: "Created GitHub repo: {github_org}/{project-name} (private)"
48
+ - If `github_org` is NOT set:
49
+ ```bash
50
+ gh repo create {project-name} --private --source=. --push
51
+ ```
52
+ Log: "Created GitHub repo: {user}/{project-name} (private)"
53
+ - If NO → ask the user for the GitHub repository URL, then run:
54
+ ```
55
+ git remote add origin {url}
56
+ ```
30
57
  - **Remote exists** → Log it and continue
31
58
  3. **Pull existing code from remote** (if any):
32
59
  - Run `git fetch origin` to get remote refs
@@ -2,6 +2,70 @@
2
2
 
3
3
  You are setting up a new project (or converting an existing one) to use the GSD-T contract-driven workflow.
4
4
 
5
+ ## Step 0: Project Directory + Git + GitHub (new projects only)
6
+
7
+ If `$ARGUMENTS` contains a project name AND the current directory is NOT already a project directory (no `package.json`, `pyproject.toml`, `Cargo.toml`, `src/`, or `CLAUDE.md`), this is a NEW project. Set it up from scratch:
8
+
9
+ ### 0a. Resolve the base projects directory
10
+
11
+ Check `~/.claude/.gsd-t-config` for settings:
12
+ ```
13
+ # ~/.claude/.gsd-t-config format (one key=value per line):
14
+ projects_dir=/Users/username/projects
15
+ github_org=MyOrg
16
+ ```
17
+
18
+ - If `projects_dir` is set → use that path
19
+ - If not → ask user: "Where should new projects be created? (e.g., /Users/you/projects)"
20
+ - Save their answer to `~/.claude/.gsd-t-config` as `projects_dir={path}` so they're never asked again
21
+
22
+ ### 0b. Create the project directory
23
+
24
+ ```bash
25
+ mkdir -p {projects_dir}/{project-name}
26
+ cd {projects_dir}/{project-name}
27
+ ```
28
+
29
+ If the directory already exists and has files → treat as an existing project, skip to Step 1.
30
+
31
+ ### 0c. Initialize git
32
+
33
+ ```bash
34
+ git init
35
+ git checkout -b main
36
+ ```
37
+
38
+ ### 0d. Create GitHub repo
39
+
40
+ Check if `gh` CLI is available and authenticated:
41
+ ```bash
42
+ gh auth status
43
+ ```
44
+
45
+ - If `gh` is available and authenticated:
46
+ - Check `~/.claude/.gsd-t-config` for `github_org` setting
47
+ - If `github_org` is set:
48
+ ```bash
49
+ gh repo create {github_org}/{project-name} --private --source=. --push
50
+ ```
51
+ Log: "Created GitHub repo: {github_org}/{project-name} (private)"
52
+ - If `github_org` is NOT set (personal repos):
53
+ ```bash
54
+ gh repo create {project-name} --private --source=. --push
55
+ ```
56
+ Log: "Created GitHub repo: {user}/{project-name} (private)"
57
+ - If `gh` is not available or not authenticated:
58
+ Log: "GitHub CLI not available — skipping repo creation. Create manually and run: `git remote add origin {url}`"
59
+
60
+ ### 0e. Continue with init
61
+
62
+ All subsequent steps run from inside `{projects_dir}/{project-name}`.
63
+
64
+ **Skip Step 0 entirely if:**
65
+ - No project name in `$ARGUMENTS`, OR
66
+ - Current directory already looks like a project (has code/config files), OR
67
+ - Current directory is already inside a git repo with files
68
+
5
69
  ## Step 1: Assess Current State
6
70
 
7
71
  Check what exists:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tekyzinc/gsd-t",
3
- "version": "2.70.12",
3
+ "version": "2.70.13",
4
4
  "description": "GSD-T: Contract-Driven Development for Claude Code — 54 slash commands with headless CI/CD mode, graph-powered code analysis, real-time agent dashboard, execution intelligence, task telemetry, doc-ripple enforcement, backlog management, impact analysis, test sync, milestone archival, and PRD generation",
5
5
  "author": "Tekyz, Inc.",
6
6
  "license": "MIT",