@calmo/task-runner 1.0.0 → 1.0.1

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.
@@ -0,0 +1,141 @@
1
+ description = "Generate an actionable, dependency-ordered tasks.md for the feature based on available design artifacts."
2
+
3
+ prompt = """
4
+ ---
5
+ description: Generate an actionable, dependency-ordered tasks.md for the feature based on available design artifacts.
6
+ handoffs:
7
+ - label: Analyze For Consistency
8
+ agent: speckit.analyze
9
+ prompt: Run a project analysis for consistency
10
+ send: true
11
+ - label: Implement Project
12
+ agent: speckit.implement
13
+ prompt: Start the implementation in phases
14
+ send: true
15
+ ---
16
+
17
+ ## User Input
18
+
19
+ ```text
20
+ $ARGUMENTS
21
+ ```
22
+
23
+ You **MUST** consider the user input before proceeding (if not empty).
24
+
25
+ ## Outline
26
+
27
+ 1. **Setup**: Run `.specify/scripts/bash/check-prerequisites.sh --json` from repo root and parse FEATURE_DIR and AVAILABLE_DOCS list. All paths must be absolute. For single quotes in args like "I'm Groot", use escape syntax: e.g 'I'\\''m Groot' (or double-quote if possible: "I'm Groot").
28
+
29
+ 2. **Load design documents**: Read from FEATURE_DIR:
30
+ - **Required**: plan.md (tech stack, libraries, structure), spec.md (user stories with priorities)
31
+ - **Optional**: data-model.md (entities), contracts/ (API endpoints), research.md (decisions), quickstart.md (test scenarios)
32
+ - Note: Not all projects have all documents. Generate tasks based on what's available.
33
+
34
+ 3. **Execute task generation workflow**:
35
+ - Load plan.md and extract tech stack, libraries, project structure
36
+ - Load spec.md and extract user stories with their priorities (P1, P2, P3, etc.)
37
+ - If data-model.md exists: Extract entities and map to user stories
38
+ - If contracts/ exists: Map endpoints to user stories
39
+ - If research.md exists: Extract decisions for setup tasks
40
+ - Generate tasks organized by user story (see Task Generation Rules below)
41
+ - Generate dependency graph showing user story completion order
42
+ - Create parallel execution examples per user story
43
+ - Validate task completeness (each user story has all needed tasks, independently testable)
44
+
45
+ 4. **Generate tasks.md**: Use `.specify/templates/tasks-template.md` as structure, fill with:
46
+ - Correct feature name from plan.md
47
+ - Phase 1: Setup tasks (project initialization)
48
+ - Phase 2: Foundational tasks (blocking prerequisites for all user stories)
49
+ - Phase 3+: One phase per user story (in priority order from spec.md)
50
+ - Each phase includes: story goal, independent test criteria, tests (if requested), implementation tasks
51
+ - Final Phase: Polish & cross-cutting concerns
52
+ - All tasks must follow the strict checklist format (see Task Generation Rules below)
53
+ - Clear file paths for each task
54
+ - Dependencies section showing story completion order
55
+ - Parallel execution examples per story
56
+ - Implementation strategy section (MVP first, incremental delivery)
57
+
58
+ 5. **Report**: Output path to generated tasks.md and summary:
59
+ - Total task count
60
+ - Task count per user story
61
+ - Parallel opportunities identified
62
+ - Independent test criteria for each story
63
+ - Suggested MVP scope (typically just User Story 1)
64
+ - Format validation: Confirm ALL tasks follow the checklist format (checkbox, ID, labels, file paths)
65
+
66
+ Context for task generation: {{args}}
67
+
68
+ The tasks.md should be immediately executable - each task must be specific enough that an LLM can complete it without additional context.
69
+
70
+ ## Task Generation Rules
71
+
72
+ **CRITICAL**: Tasks MUST be organized by user story to enable independent implementation and testing.
73
+
74
+ **Tests are OPTIONAL**: Only generate test tasks if explicitly requested in the feature specification or if user requests TDD approach.
75
+
76
+ ### Checklist Format (REQUIRED)
77
+
78
+ Every task MUST strictly follow this format:
79
+
80
+ ```text
81
+ - [ ] [TaskID] [P?] [Story?] Description with file path
82
+ ```
83
+
84
+ **Format Components**:
85
+
86
+ 1. **Checkbox**: ALWAYS start with `- [ ]` (markdown checkbox)
87
+ 2. **Task ID**: Sequential number (T001, T002, T003...) in execution order
88
+ 3. **[P] marker**: Include ONLY if task is parallelizable (different files, no dependencies on incomplete tasks)
89
+ 4. **[Story] label**: REQUIRED for user story phase tasks only
90
+ - Format: [US1], [US2], [US3], etc. (maps to user stories from spec.md)
91
+ - Setup phase: NO story label
92
+ - Foundational phase: NO story label
93
+ - User Story phases: MUST have story label
94
+ - Polish phase: NO story label
95
+ 5. **Description**: Clear action with exact file path
96
+
97
+ **Examples**:
98
+
99
+ - ✅ CORRECT: `- [ ] T001 Create project structure per implementation plan`
100
+ - ✅ CORRECT: `- [ ] T005 [P] Implement authentication middleware in src/middleware/auth.py`
101
+ - ✅ CORRECT: `- [ ] T012 [P] [US1] Create User model in src/models/user.py`
102
+ - ✅ CORRECT: `- [ ] T014 [US1] Implement UserService in src/services/user_service.py`
103
+ - ❌ WRONG: `- [ ] Create User model` (missing ID and Story label)
104
+ - ❌ WRONG: `T001 [US1] Create model` (missing checkbox)
105
+ - ❌ WRONG: `- [ ] [US1] Create User model` (missing Task ID)
106
+ - ❌ WRONG: `- [ ] T001 [US1] Create model` (missing file path)
107
+
108
+ ### Task Organization
109
+
110
+ 1. **From User Stories (spec.md)** - PRIMARY ORGANIZATION:
111
+ - Each user story (P1, P2, P3...) gets its own phase
112
+ - Map all related components to their story:
113
+ - Models needed for that story
114
+ - Services needed for that story
115
+ - Endpoints/UI needed for that story
116
+ - If tests requested: Tests specific to that story
117
+ - Mark story dependencies (most stories should be independent)
118
+
119
+ 2. **From Contracts**:
120
+ - Map each contract/endpoint → to the user story it serves
121
+ - If tests requested: Each contract → contract test task [P] before implementation in that story's phase
122
+
123
+ 3. **From Data Model**:
124
+ - Map each entity to the user story(ies) that need it
125
+ - If entity serves multiple stories: Put in earliest story or Setup phase
126
+ - Relationships → service layer tasks in appropriate story phase
127
+
128
+ 4. **From Setup/Infrastructure**:
129
+ - Shared infrastructure → Setup phase (Phase 1)
130
+ - Foundational/blocking tasks → Foundational phase (Phase 2)
131
+ - Story-specific setup → within that story's phase
132
+
133
+ ### Phase Structure
134
+
135
+ - **Phase 1**: Setup (project initialization)
136
+ - **Phase 2**: Foundational (blocking prerequisites - MUST complete before user stories)
137
+ - **Phase 3+**: User Stories in priority order (P1, P2, P3...)
138
+ - Within each story: Tests (if requested) → Models → Services → Endpoints → Integration
139
+ - Each phase should be a complete, independently testable increment
140
+ - **Final Phase**: Polish & Cross-Cutting Concerns
141
+ """
@@ -0,0 +1,34 @@
1
+ description = "Convert existing tasks into actionable, dependency-ordered GitHub issues for the feature based on available design artifacts."
2
+
3
+ prompt = """
4
+ ---
5
+ description: Convert existing tasks into actionable, dependency-ordered GitHub issues for the feature based on available design artifacts.
6
+ tools: ['github/github-mcp-server/issue_write']
7
+ ---
8
+
9
+ ## User Input
10
+
11
+ ```text
12
+ $ARGUMENTS
13
+ ```
14
+
15
+ You **MUST** consider the user input before proceeding (if not empty).
16
+
17
+ ## Outline
18
+
19
+ 1. Run `.specify/scripts/bash/check-prerequisites.sh --json --require-tasks --include-tasks` from repo root and parse FEATURE_DIR and AVAILABLE_DOCS list. All paths must be absolute. For single quotes in args like "I'm Groot", use escape syntax: e.g 'I'\\''m Groot' (or double-quote if possible: "I'm Groot").
20
+ 1. From the executed script, extract the path to **tasks**.
21
+ 1. Get the Git remote by running:
22
+
23
+ ```bash
24
+ git config --get remote.origin.url
25
+ ```
26
+
27
+ > [!CAUTION]
28
+ > ONLY PROCEED TO NEXT STEPS IF THE REMOTE IS A GITHUB URL
29
+
30
+ 1. For each task in the list, use the GitHub MCP server to create a new issue in the repository that is representative of the Git remote.
31
+
32
+ > [!CAUTION]
33
+ > UNDER NO CIRCUMSTANCES EVER CREATE ISSUES IN REPOSITORIES THAT DO NOT MATCH THE REMOTE URL
34
+ """
@@ -0,0 +1,16 @@
1
+ # To get started with Dependabot version updates, you'll need to specify which
2
+ # package ecosystems to update and where the package manifests are located.
3
+ # Please see the documentation for all configuration options:
4
+ # https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
5
+
6
+ version: 2
7
+ updates:
8
+ - package-ecosystem: 'npm' # See documentation for possible values
9
+ directory: '/' # Location of package manifests
10
+ versioning-strategy: 'lockfile-only'
11
+ schedule:
12
+ interval: 'weekly'
13
+ - package-ecosystem: 'github-actions'
14
+ directory: '/'
15
+ schedule:
16
+ interval: 'weekly'
@@ -0,0 +1,43 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [ main ]
6
+ pull_request:
7
+ branches: [ main ]
8
+
9
+ jobs:
10
+ build:
11
+ runs-on: ubuntu-latest
12
+
13
+ steps:
14
+ - name: Checkout repository
15
+ uses: actions/checkout@v6
16
+
17
+ - name: Install pnpm
18
+ uses: pnpm/action-setup@v4
19
+ with:
20
+ version: 10.28.0
21
+
22
+ - name: Setup Node.js
23
+ uses: actions/setup-node@v6
24
+ with:
25
+ node-version: '22'
26
+ cache: 'pnpm'
27
+
28
+ - name: Install dependencies
29
+ run: pnpm install
30
+
31
+ - name: Build
32
+ run: pnpm build
33
+
34
+ - name: Lint
35
+ run: pnpm lint
36
+
37
+ - name: Test
38
+ run: pnpm test
39
+
40
+ - name: Upload coverage reports to Codecov
41
+ uses: codecov/codecov-action@v5
42
+ with:
43
+ token: ${{ secrets.CODECOV_TOKEN }}
@@ -0,0 +1,46 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+
8
+ jobs:
9
+ release:
10
+ name: Release
11
+ runs-on: ubuntu-latest
12
+ permissions:
13
+ contents: write # to be able to publish a GitHub release
14
+ issues: write # to be able to comment on released issues
15
+ pull-requests: write # to be able to comment on released pull requests
16
+ id-token: write # to enable use of OIDC for npm provenance
17
+ steps:
18
+ - name: Checkout
19
+ uses: actions/checkout@v4
20
+ with:
21
+ fetch-depth: 0
22
+
23
+ - name: Setup pnpm
24
+ uses: pnpm/action-setup@v2
25
+ with:
26
+ version: 10.28.0
27
+
28
+ - name: Setup Node.js
29
+ uses: actions/setup-node@v6
30
+ with:
31
+ node-version: "lts/*"
32
+ cache: "pnpm"
33
+
34
+ - name: Install dependencies
35
+ run: pnpm install --frozen-lockfile
36
+
37
+ - name: Verify
38
+ run: |
39
+ pnpm lint
40
+ pnpm build
41
+ pnpm test
42
+
43
+ - name: Release
44
+ env:
45
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
46
+ run: npx semantic-release
@@ -0,0 +1 @@
1
+ npx commitlint --edit ${1}
@@ -0,0 +1 @@
1
+ pnpm build && pnpm lint && pnpm test
@@ -0,0 +1,4 @@
1
+ dist
2
+ node_modules
3
+ coverage
4
+ pnpm-lock.yaml
@@ -0,0 +1,32 @@
1
+ {
2
+ "branches": [
3
+ "main"
4
+ ],
5
+ "plugins": [
6
+ [
7
+ "@semantic-release/commit-analyzer",
8
+ {
9
+ "preset": "conventionalcommits"
10
+ }
11
+ ],
12
+ [
13
+ "@semantic-release/release-notes-generator",
14
+ {
15
+ "preset": "conventionalcommits"
16
+ }
17
+ ],
18
+ "@semantic-release/changelog",
19
+ "@semantic-release/npm",
20
+ "@semantic-release/github",
21
+ [
22
+ "@semantic-release/git",
23
+ {
24
+ "assets": [
25
+ "package.json",
26
+ "CHANGELOG.md"
27
+ ],
28
+ "message": "chore(release): ${nextRelease.version} [skip ci]"
29
+ }
30
+ ]
31
+ ]
32
+ }
package/CHANGELOG.md ADDED
@@ -0,0 +1,45 @@
1
+ ## <small>1.0.1 (2026-01-17)</small>
2
+
3
+ * fix: 🐛 fixing commit script and adding a fix to test auto relea ([97cedf4](https://github.com/thalesraymond/task-runner/commit/97cedf4))
4
+
5
+ ## 1.0.0 (2026-01-17)
6
+
7
+ * Add templates for project documentation and task management ([bb7fb3c](https://github.com/thalesraymond/task-runner/commit/bb7fb3c))
8
+ * Initial commit ([c13cd95](https://github.com/thalesraymond/task-runner/commit/c13cd95))
9
+ * Remove NPM_TOKEN from release.yml ([0a97d89](https://github.com/thalesraymond/task-runner/commit/0a97d89))
10
+ * remove old lock ([b616679](https://github.com/thalesraymond/task-runner/commit/b616679))
11
+ * Rename package to @calmo/task-runner ([acdf6f1](https://github.com/thalesraymond/task-runner/commit/acdf6f1))
12
+ * Set package ecosystem to 'npm' in dependabot config ([6b2cd5f](https://github.com/thalesraymond/task-runner/commit/6b2cd5f))
13
+ * Update specs/001-generic-task-runner/contracts/api.ts ([f0c062f](https://github.com/thalesraymond/task-runner/commit/f0c062f))
14
+ * Update specs/001-generic-task-runner/data-model.md ([3ae876b](https://github.com/thalesraymond/task-runner/commit/3ae876b))
15
+ * Update specs/003-refactor-file-structure/data-model.md ([9474619](https://github.com/thalesraymond/task-runner/commit/9474619))
16
+ * Update specs/003-refactor-file-structure/quickstart.md ([28a4938](https://github.com/thalesraymond/task-runner/commit/28a4938))
17
+ * Update src/TaskRunner.ts ([63e396b](https://github.com/thalesraymond/task-runner/commit/63e396b))
18
+ * feat: add CI workflow and restore dependabot ([57ae940](https://github.com/thalesraymond/task-runner/commit/57ae940))
19
+ * feat: add CI workflow and restore dependabot ([48ec98b](https://github.com/thalesraymond/task-runner/commit/48ec98b))
20
+ * feat: add CI workflow and restore dependabot ([9263c43](https://github.com/thalesraymond/task-runner/commit/9263c43))
21
+ * feat: add CI workflow for build, lint, and test ([6f97dc0](https://github.com/thalesraymond/task-runner/commit/6f97dc0))
22
+ * feat: add CI workflow for build, lint, and test ([a03422e](https://github.com/thalesraymond/task-runner/commit/a03422e))
23
+ * feat: configure semantic-release for automated releases ([fa13bf5](https://github.com/thalesraymond/task-runner/commit/fa13bf5))
24
+ * feat: Implement generic task runner with dependency management and parallel execution ([e0c8bf9](https://github.com/thalesraymond/task-runner/commit/e0c8bf9))
25
+ * feat: initialize project with TypeScript, Vitest, and basic sum function ([02dd759](https://github.com/thalesraymond/task-runner/commit/02dd759))
26
+ * feat(implement): complete file structure refactor ([7764e43](https://github.com/thalesraymond/task-runner/commit/7764e43))
27
+ * feat(implement): complete file structure refactor and cleanup ([372ca8b](https://github.com/thalesraymond/task-runner/commit/372ca8b))
28
+ * feat(plan): create technical plan for file refactor ([29d2a97](https://github.com/thalesraymond/task-runner/commit/29d2a97))
29
+ * feat(specs): add spec for file structure refactor ([884c551](https://github.com/thalesraymond/task-runner/commit/884c551))
30
+ * feat(tasks): create tasks for file structure refactor ([3b99e22](https://github.com/thalesraymond/task-runner/commit/3b99e22))
31
+ * test: add complex scenario integration test ([685399b](https://github.com/thalesraymond/task-runner/commit/685399b))
32
+ * test: add complex scenario integration test ([0935b9f](https://github.com/thalesraymond/task-runner/commit/0935b9f))
33
+ * test: add complex scenario integration test ([25440db](https://github.com/thalesraymond/task-runner/commit/25440db))
34
+ * test: add tests to reach 100% coverage ([a48678c](https://github.com/thalesraymond/task-runner/commit/a48678c))
35
+ * chore: enable husky, commitlint and git-cz ([790ae6a](https://github.com/thalesraymond/task-runner/commit/790ae6a))
36
+ * ci: add codecov upload step to workflow ([523ebe6](https://github.com/thalesraymond/task-runner/commit/523ebe6))
37
+ * build(deps): bump actions/checkout from 4 to 6 ([b092b9a](https://github.com/thalesraymond/task-runner/commit/b092b9a))
38
+ * build(deps): bump actions/setup-node from 4 to 6 ([b5cd513](https://github.com/thalesraymond/task-runner/commit/b5cd513))
39
+ * fix: change singleQuote option to false in Prettier configuration ([94625a3](https://github.com/thalesraymond/task-runner/commit/94625a3))
40
+ * fix: correct syntax errors in README.md examples and improve context hydration explanation ([98e3a5a](https://github.com/thalesraymond/task-runner/commit/98e3a5a))
41
+ * fix: standardize quotes and formatting in dependabot configuration ([ab2d7fa](https://github.com/thalesraymond/task-runner/commit/ab2d7fa))
42
+ * Docs: Add comprehensive README.md ([f644a6e](https://github.com/thalesraymond/task-runner/commit/f644a6e))
43
+ * refactor: standardize import statements and update ESLint configuration ([e1feb6f](https://github.com/thalesraymond/task-runner/commit/e1feb6f))
44
+ * style: format .specify/memory/constitution.md ([b021cb3](https://github.com/thalesraymond/task-runner/commit/b021cb3))
45
+ * docs: amend constitution to v1.1.0 (principle additions + governance update) ([198ef5d](https://github.com/thalesraymond/task-runner/commit/198ef5d))
package/GEMINI.md ADDED
@@ -0,0 +1,33 @@
1
+ # task-runner Development Guidelines
2
+
3
+ Auto-generated from all feature plans. Last updated: 2026-01-17
4
+
5
+ ## Active Technologies
6
+
7
+ - TypeScript 5.9.3 + vitest 4.0.17 (003-refactor-file-structure)
8
+
9
+ - (001-generic-task-runner)
10
+
11
+ ## Project Structure
12
+
13
+ ```text
14
+ src/
15
+ tests/
16
+ ```
17
+
18
+ ## Commands
19
+
20
+ # Add commands for
21
+
22
+ ## Code Style
23
+
24
+ : Follow standard conventions
25
+
26
+ ## Recent Changes
27
+
28
+ - 003-refactor-file-structure: Added TypeScript 5.9.3 + vitest 4.0.17
29
+
30
+ - 001-generic-task-runner: Added
31
+
32
+ <!-- MANUAL ADDITIONS START -->
33
+ <!-- MANUAL ADDITIONS END -->
package/README.md CHANGED
@@ -134,4 +134,6 @@ In my company I have a Github Issue validation engine that checks **a lot** of s
134
134
 
135
135
  ## What is .gemini and .specify
136
136
 
137
- One of the reasons this project exists is to test 'code vibing' tools, so yes, this is vibe coded. My goal is to not touch the code and see if works.
137
+ One of the reasons this project exists is to test 'code vibing' tools, so yes, this is vibe coded. My goal is to not touch the code and see if works.
138
+
139
+ ---
@@ -0,0 +1,3 @@
1
+ export default {
2
+ extends: ["@commitlint/config-conventional"],
3
+ };