devspec 0.1.0__tar.gz → 0.1.1__tar.gz

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.
Files changed (149) hide show
  1. devspec-0.1.1/.github/workflows/homebrew-package-publish.yml +54 -0
  2. {devspec-0.1.0 → devspec-0.1.1}/.github/workflows/winget-package-publish.yml +3 -2
  3. {devspec-0.1.0 → devspec-0.1.1}/PKG-INFO +1 -1
  4. {devspec-0.1.0 → devspec-0.1.1}/docs/how-to/README.md +33 -6
  5. {devspec-0.1.0 → devspec-0.1.1}/docs/how-to/setup/homebrew.md +7 -5
  6. devspec-0.1.1/packaging/homebrew/devspec.rb +44 -0
  7. devspec-0.1.1/packaging/homebrew/tap/Formula/devspec.rb +44 -0
  8. devspec-0.1.1/packaging/homebrew/tap/README.md +53 -0
  9. {devspec-0.1.0/packaging/winget/manifests/s/SpecLabs/Devspec/0.1.0 → devspec-0.1.1/packaging/winget/manifests/s/SpecLabs/Devspec/0.1.1}/SpecLabs.Devspec.installer.yaml +2 -2
  10. {devspec-0.1.0/packaging/winget/manifests/s/SpecLabs/Devspec/0.1.0 → devspec-0.1.1/packaging/winget/manifests/s/SpecLabs/Devspec/0.1.1}/SpecLabs.Devspec.locale.en-US.yaml +1 -1
  11. {devspec-0.1.0/packaging/winget/manifests/s/SpecLabs/Devspec/0.1.0 → devspec-0.1.1/packaging/winget/manifests/s/SpecLabs/Devspec/0.1.1}/SpecLabs.Devspec.yaml +1 -1
  12. {devspec-0.1.0 → devspec-0.1.1}/pyproject.toml +1 -1
  13. {devspec-0.1.0 → devspec-0.1.1}/src/devspec_installer/__init__.py +1 -1
  14. devspec-0.1.0/packaging/homebrew/devspec.rb +0 -19
  15. {devspec-0.1.0 → devspec-0.1.1}/.agents/rules/devspec-workflow.md +0 -0
  16. {devspec-0.1.0 → devspec-0.1.1}/.agents/skills/devspec-clarify.md +0 -0
  17. {devspec-0.1.0 → devspec-0.1.1}/.agents/skills/devspec-codebase-structure.md +0 -0
  18. {devspec-0.1.0 → devspec-0.1.1}/.agents/skills/devspec-coding-standards.md +0 -0
  19. {devspec-0.1.0 → devspec-0.1.1}/.agents/skills/devspec-diagram.md +0 -0
  20. {devspec-0.1.0 → devspec-0.1.1}/.agents/skills/devspec-extract.md +0 -0
  21. {devspec-0.1.0 → devspec-0.1.1}/.agents/skills/devspec-finalize.md +0 -0
  22. {devspec-0.1.0 → devspec-0.1.1}/.agents/skills/devspec-implement.md +0 -0
  23. {devspec-0.1.0 → devspec-0.1.1}/.agents/skills/devspec-projectcontext.md +0 -0
  24. {devspec-0.1.0 → devspec-0.1.1}/.agents/skills/devspec-review.md +0 -0
  25. {devspec-0.1.0 → devspec-0.1.1}/.agents/skills/devspec-rules.md +0 -0
  26. {devspec-0.1.0 → devspec-0.1.1}/.agents/skills/devspec-story.md +0 -0
  27. {devspec-0.1.0 → devspec-0.1.1}/.agents/skills/devspec-tasks.md +0 -0
  28. {devspec-0.1.0 → devspec-0.1.1}/.agents/skills/devspec-techstack.md +0 -0
  29. {devspec-0.1.0 → devspec-0.1.1}/.claude/skills/devspec-clarify/SKILL.md +0 -0
  30. {devspec-0.1.0 → devspec-0.1.1}/.claude/skills/devspec-codebase-structure/SKILL.md +0 -0
  31. {devspec-0.1.0 → devspec-0.1.1}/.claude/skills/devspec-coding-standards/SKILL.md +0 -0
  32. {devspec-0.1.0 → devspec-0.1.1}/.claude/skills/devspec-diagram/SKILL.md +0 -0
  33. {devspec-0.1.0 → devspec-0.1.1}/.claude/skills/devspec-extract/SKILL.md +0 -0
  34. {devspec-0.1.0 → devspec-0.1.1}/.claude/skills/devspec-finalize/SKILL.md +0 -0
  35. {devspec-0.1.0 → devspec-0.1.1}/.claude/skills/devspec-implement/SKILL.md +0 -0
  36. {devspec-0.1.0 → devspec-0.1.1}/.claude/skills/devspec-projectcontext/SKILL.md +0 -0
  37. {devspec-0.1.0 → devspec-0.1.1}/.claude/skills/devspec-review/SKILL.md +0 -0
  38. {devspec-0.1.0 → devspec-0.1.1}/.claude/skills/devspec-rules/SKILL.md +0 -0
  39. {devspec-0.1.0 → devspec-0.1.1}/.claude/skills/devspec-story/SKILL.md +0 -0
  40. {devspec-0.1.0 → devspec-0.1.1}/.claude/skills/devspec-tasks/SKILL.md +0 -0
  41. {devspec-0.1.0 → devspec-0.1.1}/.claude/skills/devspec-techstack/SKILL.md +0 -0
  42. {devspec-0.1.0 → devspec-0.1.1}/.cursor/rules/devspec-workflow.mdc +0 -0
  43. {devspec-0.1.0 → devspec-0.1.1}/.gemini/commands/devspec/clarify.toml +0 -0
  44. {devspec-0.1.0 → devspec-0.1.1}/.gemini/commands/devspec/codebase-structure.toml +0 -0
  45. {devspec-0.1.0 → devspec-0.1.1}/.gemini/commands/devspec/coding-standards.toml +0 -0
  46. {devspec-0.1.0 → devspec-0.1.1}/.gemini/commands/devspec/diagram.toml +0 -0
  47. {devspec-0.1.0 → devspec-0.1.1}/.gemini/commands/devspec/extract.toml +0 -0
  48. {devspec-0.1.0 → devspec-0.1.1}/.gemini/commands/devspec/finalize.toml +0 -0
  49. {devspec-0.1.0 → devspec-0.1.1}/.gemini/commands/devspec/implement.toml +0 -0
  50. {devspec-0.1.0 → devspec-0.1.1}/.gemini/commands/devspec/projectcontext.toml +0 -0
  51. {devspec-0.1.0 → devspec-0.1.1}/.gemini/commands/devspec/review.toml +0 -0
  52. {devspec-0.1.0 → devspec-0.1.1}/.gemini/commands/devspec/rules.toml +0 -0
  53. {devspec-0.1.0 → devspec-0.1.1}/.gemini/commands/devspec/story.toml +0 -0
  54. {devspec-0.1.0 → devspec-0.1.1}/.gemini/commands/devspec/tasks.toml +0 -0
  55. {devspec-0.1.0 → devspec-0.1.1}/.gemini/commands/devspec/techstack.toml +0 -0
  56. {devspec-0.1.0 → devspec-0.1.1}/.github/agents/devspec.clarify.agent.md +0 -0
  57. {devspec-0.1.0 → devspec-0.1.1}/.github/agents/devspec.codebase-structure.agent.md +0 -0
  58. {devspec-0.1.0 → devspec-0.1.1}/.github/agents/devspec.coding-standards.agent.md +0 -0
  59. {devspec-0.1.0 → devspec-0.1.1}/.github/agents/devspec.diagram.agent.md +0 -0
  60. {devspec-0.1.0 → devspec-0.1.1}/.github/agents/devspec.extract.agent.md +0 -0
  61. {devspec-0.1.0 → devspec-0.1.1}/.github/agents/devspec.finalize.agent.md +0 -0
  62. {devspec-0.1.0 → devspec-0.1.1}/.github/agents/devspec.implement-task.agent.md +0 -0
  63. {devspec-0.1.0 → devspec-0.1.1}/.github/agents/devspec.projectcontext.agent.md +0 -0
  64. {devspec-0.1.0 → devspec-0.1.1}/.github/agents/devspec.review.agent.md +0 -0
  65. {devspec-0.1.0 → devspec-0.1.1}/.github/agents/devspec.rules.agent.md +0 -0
  66. {devspec-0.1.0 → devspec-0.1.1}/.github/agents/devspec.story.agent.md +0 -0
  67. {devspec-0.1.0 → devspec-0.1.1}/.github/agents/devspec.tasks.agent.md +0 -0
  68. {devspec-0.1.0 → devspec-0.1.1}/.github/agents/devspec.techstack.agent.md +0 -0
  69. {devspec-0.1.0 → devspec-0.1.1}/.github/prompts/PATTERNS.md +0 -0
  70. {devspec-0.1.0 → devspec-0.1.1}/.github/prompts/README.md +0 -0
  71. {devspec-0.1.0 → devspec-0.1.1}/.github/prompts/devspec.clarify.prompt.md +0 -0
  72. {devspec-0.1.0 → devspec-0.1.1}/.github/prompts/devspec.codebase-structure.prompt.md +0 -0
  73. {devspec-0.1.0 → devspec-0.1.1}/.github/prompts/devspec.coding-standards.prompt.md +0 -0
  74. {devspec-0.1.0 → devspec-0.1.1}/.github/prompts/devspec.diagram.prompt.md +0 -0
  75. {devspec-0.1.0 → devspec-0.1.1}/.github/prompts/devspec.extract.prompt.md +0 -0
  76. {devspec-0.1.0 → devspec-0.1.1}/.github/prompts/devspec.finalize.prompt.md +0 -0
  77. {devspec-0.1.0 → devspec-0.1.1}/.github/prompts/devspec.implement.prompt.md +0 -0
  78. {devspec-0.1.0 → devspec-0.1.1}/.github/prompts/devspec.projectcontext.prompt.md +0 -0
  79. {devspec-0.1.0 → devspec-0.1.1}/.github/prompts/devspec.review.prompt.md +0 -0
  80. {devspec-0.1.0 → devspec-0.1.1}/.github/prompts/devspec.rules.prompt.md +0 -0
  81. {devspec-0.1.0 → devspec-0.1.1}/.github/prompts/devspec.story.prompt.md +0 -0
  82. {devspec-0.1.0 → devspec-0.1.1}/.github/prompts/devspec.tasks.prompt.md +0 -0
  83. {devspec-0.1.0 → devspec-0.1.1}/.github/prompts/devspec.techstack.prompt.md +0 -0
  84. {devspec-0.1.0 → devspec-0.1.1}/.github/skills/exploration-recovery/SKILL.md +0 -0
  85. {devspec-0.1.0 → devspec-0.1.1}/.github/workflows/python-package-ci.yml +0 -0
  86. {devspec-0.1.0 → devspec-0.1.1}/.github/workflows/python-package-publish.yml +0 -0
  87. {devspec-0.1.0 → devspec-0.1.1}/.gitignore +0 -0
  88. {devspec-0.1.0 → devspec-0.1.1}/AGENTS.md +0 -0
  89. {devspec-0.1.0 → devspec-0.1.1}/GEMINI.md +0 -0
  90. {devspec-0.1.0 → devspec-0.1.1}/LICENSE +0 -0
  91. {devspec-0.1.0 → devspec-0.1.1}/README.md +0 -0
  92. {devspec-0.1.0 → devspec-0.1.1}/devspec/adapters/README.md +0 -0
  93. {devspec-0.1.0 → devspec-0.1.1}/devspec/adapters/antigravity.md +0 -0
  94. {devspec-0.1.0 → devspec-0.1.1}/devspec/adapters/claude-code.md +0 -0
  95. {devspec-0.1.0 → devspec-0.1.1}/devspec/adapters/codex-skills/devspec-workflow/SKILL.md +0 -0
  96. {devspec-0.1.0 → devspec-0.1.1}/devspec/adapters/codex.md +0 -0
  97. {devspec-0.1.0 → devspec-0.1.1}/devspec/adapters/command-registry.md +0 -0
  98. {devspec-0.1.0 → devspec-0.1.1}/devspec/adapters/compatibility-matrix.md +0 -0
  99. {devspec-0.1.0 → devspec-0.1.1}/devspec/adapters/copilot.md +0 -0
  100. {devspec-0.1.0 → devspec-0.1.1}/devspec/adapters/cursor.md +0 -0
  101. {devspec-0.1.0 → devspec-0.1.1}/devspec/adapters/enterprise-governance.md +0 -0
  102. {devspec-0.1.0 → devspec-0.1.1}/devspec/adapters/gemini-cli.md +0 -0
  103. {devspec-0.1.0 → devspec-0.1.1}/devspec/adapters/validation-flows.md +0 -0
  104. {devspec-0.1.0 → devspec-0.1.1}/devspec/architecture/_template/artifact-queue.md +0 -0
  105. {devspec-0.1.0 → devspec-0.1.1}/devspec/architecture/_template/decision.md +0 -0
  106. {devspec-0.1.0 → devspec-0.1.1}/devspec/architecture/_template/diagram.md +0 -0
  107. {devspec-0.1.0 → devspec-0.1.1}/devspec/architecture/_template/overview.md +0 -0
  108. {devspec-0.1.0 → devspec-0.1.1}/devspec/architecture/artifact-queue.md +0 -0
  109. {devspec-0.1.0 → devspec-0.1.1}/devspec/architecture/diagrams/README.md +0 -0
  110. {devspec-0.1.0 → devspec-0.1.1}/devspec/architecture/overview.md +0 -0
  111. {devspec-0.1.0 → devspec-0.1.1}/devspec/constitution.md +0 -0
  112. {devspec-0.1.0 → devspec-0.1.1}/devspec/foundation/_template/codebase-structure.md +0 -0
  113. {devspec-0.1.0 → devspec-0.1.1}/devspec/foundation/_template/coding-standards.md +0 -0
  114. {devspec-0.1.0 → devspec-0.1.1}/devspec/foundation/_template/discovery-exclusions.md +0 -0
  115. {devspec-0.1.0 → devspec-0.1.1}/devspec/foundation/_template/exploration-state.md +0 -0
  116. {devspec-0.1.0 → devspec-0.1.1}/devspec/foundation/_template/extraction-state.md +0 -0
  117. {devspec-0.1.0 → devspec-0.1.1}/devspec/foundation/_template/project-context.md +0 -0
  118. {devspec-0.1.0 → devspec-0.1.1}/devspec/foundation/_template/provider-integrations.md +0 -0
  119. {devspec-0.1.0 → devspec-0.1.1}/devspec/foundation/_template/rules.md +0 -0
  120. {devspec-0.1.0 → devspec-0.1.1}/devspec/foundation/_template/tech-stack.md +0 -0
  121. {devspec-0.1.0 → devspec-0.1.1}/devspec/foundation/codebase-structure.md +0 -0
  122. {devspec-0.1.0 → devspec-0.1.1}/devspec/foundation/coding-standards.md +0 -0
  123. {devspec-0.1.0 → devspec-0.1.1}/devspec/foundation/discovery-exclusions.md +0 -0
  124. {devspec-0.1.0 → devspec-0.1.1}/devspec/foundation/extraction-state.md +0 -0
  125. {devspec-0.1.0 → devspec-0.1.1}/devspec/foundation/project-context.md +0 -0
  126. {devspec-0.1.0 → devspec-0.1.1}/devspec/foundation/provider-integrations.md +0 -0
  127. {devspec-0.1.0 → devspec-0.1.1}/devspec/foundation/rules.md +0 -0
  128. {devspec-0.1.0 → devspec-0.1.1}/devspec/foundation/tech-stack.md +0 -0
  129. {devspec-0.1.0 → devspec-0.1.1}/devspec/glossary.md +0 -0
  130. {devspec-0.1.0 → devspec-0.1.1}/devspec/work-items/_template/clarify.md +0 -0
  131. {devspec-0.1.0 → devspec-0.1.1}/devspec/work-items/_template/decisions.md +0 -0
  132. {devspec-0.1.0 → devspec-0.1.1}/devspec/work-items/_template/diagrams.md +0 -0
  133. {devspec-0.1.0 → devspec-0.1.1}/devspec/work-items/_template/finalize.md +0 -0
  134. {devspec-0.1.0 → devspec-0.1.1}/devspec/work-items/_template/implement.md +0 -0
  135. {devspec-0.1.0 → devspec-0.1.1}/devspec/work-items/_template/meta.md +0 -0
  136. {devspec-0.1.0 → devspec-0.1.1}/devspec/work-items/_template/notes.md +0 -0
  137. {devspec-0.1.0 → devspec-0.1.1}/devspec/work-items/_template/review.md +0 -0
  138. {devspec-0.1.0 → devspec-0.1.1}/devspec/work-items/_template/story.md +0 -0
  139. {devspec-0.1.0 → devspec-0.1.1}/devspec/work-items/_template/tasks.md +0 -0
  140. {devspec-0.1.0 → devspec-0.1.1}/docs/how-to/setup/README.md +0 -0
  141. {devspec-0.1.0 → devspec-0.1.1}/docs/how-to/setup/manual-copy.md +0 -0
  142. {devspec-0.1.0 → devspec-0.1.1}/docs/how-to/setup/uv.md +0 -0
  143. {devspec-0.1.0 → devspec-0.1.1}/docs/how-to/setup/winget.md +0 -0
  144. {devspec-0.1.0 → devspec-0.1.1}/packaging/devspec-profiles.json +0 -0
  145. {devspec-0.1.0 → devspec-0.1.1}/scripts/test-local-install.ps1 +0 -0
  146. {devspec-0.1.0 → devspec-0.1.1}/scripts/test-local-install.sh +0 -0
  147. {devspec-0.1.0 → devspec-0.1.1}/src/devspec_installer/__main__.py +0 -0
  148. {devspec-0.1.0 → devspec-0.1.1}/src/devspec_installer/cli.py +0 -0
  149. {devspec-0.1.0 → devspec-0.1.1}/tests/test_cli.py +0 -0
@@ -0,0 +1,54 @@
1
+ name: Homebrew Package Publish
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ inputs:
6
+ version:
7
+ description: "Release version without the leading v"
8
+ required: true
9
+ default: "0.1.1"
10
+ push:
11
+ tags:
12
+ - "v*"
13
+
14
+ permissions:
15
+ contents: read
16
+
17
+ jobs:
18
+ homebrew-package:
19
+ name: Generate Homebrew formula artifact
20
+ runs-on: ubuntu-latest
21
+ steps:
22
+ - uses: actions/checkout@v4
23
+
24
+ - name: Generate Homebrew formula
25
+ shell: bash
26
+ run: |
27
+ set -euo pipefail
28
+
29
+ version="${GITHUB_REF_NAME#v}"
30
+ if [[ "${GITHUB_REF_TYPE:-}" != "tag" ]]; then
31
+ version="${{ github.event.inputs.version }}"
32
+ fi
33
+
34
+ tarball_url="https://github.com/speclabs/devspec/archive/refs/tags/v${version}.tar.gz"
35
+ sha256="$(curl -fsSL "${tarball_url}" | sha256sum | awk '{print $1}')"
36
+
37
+ mkdir -p "dist/homebrew/Formula"
38
+ cp packaging/homebrew/devspec.rb "dist/homebrew/Formula/devspec.rb"
39
+ sed -i \
40
+ -e "s#https://github.com/speclabs/devspec/archive/refs/tags/v[0-9][0-9.]*.tar.gz#${tarball_url}#g" \
41
+ -e "s#REPLACE_WITH_V[0-9_]*_RELEASE_SHA256#${sha256}#g" \
42
+ "dist/homebrew/Formula/devspec.rb"
43
+
44
+ echo "${sha256} devspec-v${version}.tar.gz" > "dist/homebrew/devspec-v${version}.tar.gz.sha256"
45
+ echo "Homebrew formula: dist/homebrew/Formula/devspec.rb"
46
+ echo "Source tarball SHA256: ${sha256}"
47
+
48
+ - name: Upload Homebrew package artifacts
49
+ uses: actions/upload-artifact@v4
50
+ with:
51
+ name: devspec-homebrew-package
52
+ path: |
53
+ dist/homebrew/Formula/devspec.rb
54
+ dist/homebrew/*.sha256
@@ -75,11 +75,12 @@ jobs:
75
75
  shell: pwsh
76
76
  run: |
77
77
  $ErrorActionPreference = "Stop"
78
+ $version = if ($env:GITHUB_REF_NAME -match "^v(.+)$") { $Matches[1] } else { "0.1.1" }
78
79
  $hash = (Get-FileHash dist\winget\devspec.exe -Algorithm SHA256).Hash.ToLowerInvariant()
79
80
  "$hash devspec.exe" | Set-Content -Path dist\winget\devspec.exe.sha256 -Encoding ASCII
80
81
 
81
- $sourceRoot = "packaging\winget\manifests\s\SpecLabs\Devspec\0.1.0"
82
- $manifestRoot = "dist\winget\manifests\s\SpecLabs\Devspec\0.1.0"
82
+ $sourceRoot = "packaging\winget\manifests\s\SpecLabs\Devspec\$version"
83
+ $manifestRoot = "dist\winget\manifests\s\SpecLabs\Devspec\$version"
83
84
  New-Item -ItemType Directory -Force -Path $manifestRoot | Out-Null
84
85
  Copy-Item -Path "$sourceRoot\*.yaml" -Destination $manifestRoot
85
86
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: devspec
3
- Version: 0.1.0
3
+ Version: 0.1.1
4
4
  Summary: Installer and synchronizer CLI for the devspec workflow framework.
5
5
  Author: devspec contributors
6
6
  License: Apache License
@@ -439,7 +439,7 @@ devspec sync --target . --profile all
439
439
  `diff` and `sync --dry-run` report version context before the file report:
440
440
 
441
441
  ```text
442
- Installed version: 0.1.0
442
+ Installed version: 0.1.1
443
443
  Package version: 0.2.0
444
444
  Version status: upgrade available
445
445
  ```
@@ -511,26 +511,53 @@ Use provider-specific GitHub workflow filenames and display names. The current p
511
511
  ```text
512
512
  .github/workflows/python-package-ci.yml
513
513
  .github/workflows/python-package-publish.yml
514
+ .github/workflows/homebrew-package-publish.yml
514
515
  .github/workflows/winget-package-publish.yml
515
516
  ```
516
517
 
517
518
  Future package-provider workflows should follow the same pattern, such as `homebrew-package-publish.yml` or `npm-package-publish.yml`.
518
519
 
520
+ For Homebrew releases, publish the source formula through `speclabs/homebrew-tap` first. The tap-ready template files live in:
521
+
522
+ ```text
523
+ packaging/homebrew/tap/Formula/devspec.rb
524
+ packaging/homebrew/tap/README.md
525
+ ```
526
+
527
+ On `v*` tags, `.github/workflows/homebrew-package-publish.yml` generates `dist/homebrew/Formula/devspec.rb` with the tag-specific tarball URL and SHA256. Copy that generated formula to `Formula/devspec.rb` in the tap repository, then validate it from the tap checkout:
528
+
529
+ ```text
530
+ brew audit --new --formula Formula/devspec.rb
531
+ brew install --build-from-source Formula/devspec.rb
532
+ brew test devspec
533
+ devspec version
534
+ devspec init --target "$(mktemp -d)" --profile core --repo-state existing
535
+ ```
536
+
537
+ After pushing the tap, verify the public install path:
538
+
539
+ ```text
540
+ brew install speclabs/tap/devspec
541
+ devspec doctor --target . --profile core
542
+ ```
543
+
544
+ The first Homebrew release is source-only. Add bottles later after macOS and Linux source installs are stable.
545
+
519
546
  For WinGet releases, publish the Windows portable executable from GitHub Releases and submit the generated manifest to `microsoft/winget-pkgs`:
520
547
 
521
548
  ```text
522
549
  dist/winget/devspec.exe
523
550
  dist/winget/devspec.exe.sha256
524
- dist/winget/manifests/s/SpecLabs/Devspec/0.1.0/SpecLabs.Devspec.yaml
525
- dist/winget/manifests/s/SpecLabs/Devspec/0.1.0/SpecLabs.Devspec.locale.en-US.yaml
526
- dist/winget/manifests/s/SpecLabs/Devspec/0.1.0/SpecLabs.Devspec.installer.yaml
551
+ dist/winget/manifests/s/SpecLabs/Devspec/0.1.1/SpecLabs.Devspec.yaml
552
+ dist/winget/manifests/s/SpecLabs/Devspec/0.1.1/SpecLabs.Devspec.locale.en-US.yaml
553
+ dist/winget/manifests/s/SpecLabs/Devspec/0.1.1/SpecLabs.Devspec.installer.yaml
527
554
  ```
528
555
 
529
556
  The manifest path is case-sensitive and must match `PackageIdentifier: SpecLabs.Devspec`. Validate the generated manifest directory on Windows before submission:
530
557
 
531
558
  ```text
532
- winget validate dist/winget/manifests/s/SpecLabs/Devspec/0.1.0
533
- winget install --manifest dist/winget/manifests/s/SpecLabs/Devspec/0.1.0
559
+ winget validate dist/winget/manifests/s/SpecLabs/Devspec/0.1.1
560
+ winget install --manifest dist/winget/manifests/s/SpecLabs/Devspec/0.1.1
534
561
  ```
535
562
 
536
563
  When adapter files are added, removed, or moved, update:
@@ -2,12 +2,12 @@
2
2
 
3
3
  Use this guide when your macOS or Linux team already uses Homebrew. Homebrew is a developer package manager: it installs command-line tools and can update them later.
4
4
 
5
- The Homebrew package name is a placeholder until the public tap and release are finalized.
5
+ The initial Homebrew package is published through the SpecLabs tap as a source formula. Bottled packages may be added after source installs are stable on macOS and Linux.
6
6
 
7
7
  ## Before You Start
8
8
 
9
9
  - Homebrew must be installed. Use the official site: [Install Homebrew](https://brew.sh/).
10
- - The devspec Homebrew tap or formula must be available.
10
+ - The SpecLabs Homebrew tap must be reachable from your machine.
11
11
  - Open your target repository in a terminal.
12
12
 
13
13
  ## Open A Terminal
@@ -25,9 +25,11 @@ cd /Users/me/code/my-app
25
25
  Install the CLI:
26
26
 
27
27
  ```text
28
- brew install <tap>/devspec/devspec
28
+ brew install speclabs/tap/devspec
29
29
  ```
30
30
 
31
+ If your environment cannot use the Homebrew tap yet, use [uv and uvx](uv.md) as the fallback.
32
+
31
33
  Install devspec files into your repository:
32
34
 
33
35
  ```text
@@ -115,7 +117,7 @@ devspec init --target /Users/me/code/my-app --profile all --repo-state existing
115
117
 
116
118
  | Argument | Meaning | Beginner explanation |
117
119
  | --- | --- | --- |
118
- | `brew install <tap>/devspec/devspec` | Install the devspec CLI. | The `<tap>` placeholder will become the real Homebrew tap name after release. |
120
+ | `brew install speclabs/tap/devspec` | Install the devspec CLI. | Installs from the public SpecLabs tap. Initial releases build from source. |
119
121
  | `brew upgrade devspec` | Update the devspec CLI. | Updates the command-line tool. Run `devspec sync --dry-run` afterward to preview framework file changes. |
120
122
  | `version` | Print the devspec CLI version. | Use this to confirm the command runs. It does not change files. |
121
123
  | `init` | Install devspec files. | Copies framework files into your repo. |
@@ -133,6 +135,6 @@ devspec init --target /Users/me/code/my-app --profile all --repo-state existing
133
135
  | Problem | What to try |
134
136
  | --- | --- |
135
137
  | `brew` is not found. | Install Homebrew, or use [uv and uvx](uv.md). |
136
- | The `<tap>` command fails. | The tap name may still be a placeholder. Use `uvx devspec ...` until the tap is published. |
138
+ | `brew install speclabs/tap/devspec` fails. | Confirm the tap is reachable and Homebrew can access GitHub. Use `uvx devspec ...` as the fallback. |
137
139
  | `devspec` is not found after install. | Run `brew doctor`, then close and reopen your terminal. |
138
140
  | Your team does not use Homebrew. | Use [uv and uvx](uv.md) instead. |
@@ -0,0 +1,44 @@
1
+ class Devspec < Formula
2
+ include Language::Python::Virtualenv
3
+
4
+ desc "Installer and synchronizer CLI for the devspec workflow framework"
5
+ homepage "https://github.com/speclabs/devspec"
6
+ url "https://github.com/speclabs/devspec/archive/refs/tags/v0.1.1.tar.gz"
7
+ sha256 "REPLACE_WITH_V0_1_1_RELEASE_SHA256"
8
+ license "Apache-2.0"
9
+
10
+ depends_on "python@3.12"
11
+
12
+ resource "hatchling" do
13
+ url "https://files.pythonhosted.org/packages/63/4c/8717ccb844b4fa5a5ba6352e97d743ed24e9a22cf90b7c109c17030a46a1/hatchling-1.30.1.tar.gz"
14
+ sha256 "eee4fd45357f72ebb3d7a42e5d72cfb5e29ed426d79e8836288926c4258d5f2e"
15
+ end
16
+
17
+ resource "packaging" do
18
+ url "https://files.pythonhosted.org/packages/d7/f1/e7a6dd94a8d4a5626c03e4e99c87f241ba9e350cd9e6d75123f992427270/packaging-26.2.tar.gz"
19
+ sha256 "ff452ff5a3e828ce110190feff1178bb1f2ea2281fa2075aadb987c2fb221661"
20
+ end
21
+
22
+ resource "pathspec" do
23
+ url "https://files.pythonhosted.org/packages/5a/82/42f767fc1c1143d6fd36efb827202a2d997a375e160a71eb2888a925aac1/pathspec-1.1.1.tar.gz"
24
+ sha256 "17db5ecd524104a120e173814c90367a96a98d07c45b2e10c2f3919fff91bf5a"
25
+ end
26
+
27
+ resource "pluggy" do
28
+ url "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz"
29
+ sha256 "7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3"
30
+ end
31
+
32
+ resource "trove-classifiers" do
33
+ url "https://files.pythonhosted.org/packages/c2/e3/7ca82ee24c82d344584abd5b8637b3bd056f2900226e8d82fc22f1184b92/trove_classifiers-2026.6.1.19.tar.gz"
34
+ sha256 "c5132b4b61a829d11cfbd2d72e97f20a45ed6edb95e45c5efdeb5e00836b2745"
35
+ end
36
+
37
+ def install
38
+ virtualenv_install_with_resources
39
+ end
40
+
41
+ test do
42
+ assert_match version.to_s, shell_output("#{bin}/devspec version")
43
+ end
44
+ end
@@ -0,0 +1,44 @@
1
+ class Devspec < Formula
2
+ include Language::Python::Virtualenv
3
+
4
+ desc "Installer and synchronizer CLI for the devspec workflow framework"
5
+ homepage "https://github.com/speclabs/devspec"
6
+ url "https://github.com/speclabs/devspec/archive/refs/tags/v0.1.1.tar.gz"
7
+ sha256 "REPLACE_WITH_V0_1_1_RELEASE_SHA256"
8
+ license "Apache-2.0"
9
+
10
+ depends_on "python@3.12"
11
+
12
+ resource "hatchling" do
13
+ url "https://files.pythonhosted.org/packages/63/4c/8717ccb844b4fa5a5ba6352e97d743ed24e9a22cf90b7c109c17030a46a1/hatchling-1.30.1.tar.gz"
14
+ sha256 "eee4fd45357f72ebb3d7a42e5d72cfb5e29ed426d79e8836288926c4258d5f2e"
15
+ end
16
+
17
+ resource "packaging" do
18
+ url "https://files.pythonhosted.org/packages/d7/f1/e7a6dd94a8d4a5626c03e4e99c87f241ba9e350cd9e6d75123f992427270/packaging-26.2.tar.gz"
19
+ sha256 "ff452ff5a3e828ce110190feff1178bb1f2ea2281fa2075aadb987c2fb221661"
20
+ end
21
+
22
+ resource "pathspec" do
23
+ url "https://files.pythonhosted.org/packages/5a/82/42f767fc1c1143d6fd36efb827202a2d997a375e160a71eb2888a925aac1/pathspec-1.1.1.tar.gz"
24
+ sha256 "17db5ecd524104a120e173814c90367a96a98d07c45b2e10c2f3919fff91bf5a"
25
+ end
26
+
27
+ resource "pluggy" do
28
+ url "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz"
29
+ sha256 "7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3"
30
+ end
31
+
32
+ resource "trove-classifiers" do
33
+ url "https://files.pythonhosted.org/packages/c2/e3/7ca82ee24c82d344584abd5b8637b3bd056f2900226e8d82fc22f1184b92/trove_classifiers-2026.6.1.19.tar.gz"
34
+ sha256 "c5132b4b61a829d11cfbd2d72e97f20a45ed6edb95e45c5efdeb5e00836b2745"
35
+ end
36
+
37
+ def install
38
+ virtualenv_install_with_resources
39
+ end
40
+
41
+ test do
42
+ assert_match version.to_s, shell_output("#{bin}/devspec version")
43
+ end
44
+ end
@@ -0,0 +1,53 @@
1
+ # SpecLabs Homebrew Tap Package
2
+
3
+ This directory contains the tap-ready files for `speclabs/homebrew-tap`.
4
+
5
+ Initial deployment is source-only. Bottles should be added after the formula has passed source install validation on macOS and Linux.
6
+
7
+ ## Publish
8
+
9
+ Create or update the public tap repository:
10
+
11
+ ```text
12
+ brew tap-new speclabs/tap
13
+ ```
14
+
15
+ For release publishing, use the generated formula from the `Homebrew Package Publish` workflow. Copy `dist/homebrew/Formula/devspec.rb` into the tap repository so it lands at:
16
+
17
+ ```text
18
+ Formula/devspec.rb
19
+ ```
20
+
21
+ Commit and push the tap. Users can then install with:
22
+
23
+ ```text
24
+ brew install speclabs/tap/devspec
25
+ ```
26
+
27
+ ## Validate
28
+
29
+ Run these checks from the tap repository:
30
+
31
+ ```text
32
+ brew audit --new --formula Formula/devspec.rb
33
+ brew install --build-from-source Formula/devspec.rb
34
+ brew test devspec
35
+ devspec version
36
+ devspec init --target "$(mktemp -d)" --profile core --repo-state existing
37
+ ```
38
+
39
+ After the public tap is pushed, verify a clean install:
40
+
41
+ ```text
42
+ brew install speclabs/tap/devspec
43
+ devspec doctor --target . --profile core
44
+ ```
45
+
46
+ ## Update A Release
47
+
48
+ For each new `devspec` tag:
49
+
50
+ 1. Update `url` to the new GitHub tag tarball.
51
+ 2. Use the `Homebrew Package Publish` workflow artifact to get the tag tarball checksum.
52
+ 3. Run `brew update-python-resources --print-only devspec` from the tap when dependencies change.
53
+ 4. Re-run the validation checks.
@@ -1,12 +1,12 @@
1
1
  # yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.12.0.schema.json
2
2
  PackageIdentifier: SpecLabs.Devspec
3
- PackageVersion: 0.1.0
3
+ PackageVersion: 0.1.1
4
4
  InstallerType: portable
5
5
  Commands:
6
6
  - devspec
7
7
  Installers:
8
8
  - Architecture: x64
9
- InstallerUrl: https://github.com/speclabs/devspec/releases/download/v0.1.0/devspec.exe
9
+ InstallerUrl: https://github.com/speclabs/devspec/releases/download/v0.1.1/devspec.exe
10
10
  InstallerSha256: REPLACE_WITH_RELEASE_SHA256
11
11
  ManifestType: installer
12
12
  ManifestVersion: 1.12.0
@@ -1,6 +1,6 @@
1
1
  # yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.12.0.schema.json
2
2
  PackageIdentifier: SpecLabs.Devspec
3
- PackageVersion: 0.1.0
3
+ PackageVersion: 0.1.1
4
4
  PackageLocale: en-US
5
5
  Publisher: SpecLabs
6
6
  PublisherUrl: https://github.com/speclabs
@@ -1,6 +1,6 @@
1
1
  # yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.12.0.schema.json
2
2
  PackageIdentifier: SpecLabs.Devspec
3
- PackageVersion: 0.1.0
3
+ PackageVersion: 0.1.1
4
4
  DefaultLocale: en-US
5
5
  ManifestType: version
6
6
  ManifestVersion: 1.12.0
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "devspec"
7
- version = "0.1.0"
7
+ version = "0.1.1"
8
8
  description = "Installer and synchronizer CLI for the devspec workflow framework."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -1,3 +1,3 @@
1
1
  """Installer CLI for the devspec framework."""
2
2
 
3
- __version__ = "0.1.0"
3
+ __version__ = "0.1.1"
@@ -1,19 +0,0 @@
1
- class Devspec < Formula
2
- include Language::Python::Virtualenv
3
-
4
- desc "Installer and synchronizer CLI for the devspec workflow framework"
5
- homepage "https://github.com/OWNER/devspec"
6
- url "https://github.com/OWNER/devspec/archive/refs/tags/v0.1.0.tar.gz"
7
- sha256 "REPLACE_WITH_RELEASE_SHA256"
8
- license "Apache-2.0"
9
-
10
- depends_on "python@3.12"
11
-
12
- def install
13
- virtualenv_install_with_resources
14
- end
15
-
16
- test do
17
- assert_match version.to_s, shell_output("#{bin}/devspec version")
18
- end
19
- end
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes