forgedock 1.0.17 → 1.0.19

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 (134) hide show
  1. package/README.md +34 -1
  2. package/bin/cross-publish.mjs +344 -0
  3. package/bin/forgedock.mjs +229 -17
  4. package/commands/autopilot.md +77 -0
  5. package/commands/design-bench.md +176 -0
  6. package/commands/design-render-critique-loop.md +103 -0
  7. package/commands/design.md +259 -0
  8. package/commands/issue.md +7 -3
  9. package/commands/orchestrate.md +121 -0
  10. package/commands/{resume.md → pipeline-resume.md} +4 -4
  11. package/commands/{status.md → pipeline-status.md} +1 -1
  12. package/commands/qa-sweep.md +37 -2
  13. package/commands/quality-gate.md +57 -0
  14. package/commands/review-pr-staging.md +158 -2
  15. package/commands/test-gate.md +929 -0
  16. package/commands/work-on/build/implement.md +5 -3
  17. package/commands/work-on.md +53 -3
  18. package/docs/CI.md +177 -0
  19. package/docs/FORGE-PROTOCOL.md +324 -0
  20. package/docs/articles/b-vs-c-baseline.md +210 -0
  21. package/docs/articles/full-abc-benchmark.md +205 -0
  22. package/docs/articles/selective-spec-loading-token-savings.md +140 -0
  23. package/docs/design/abc-benchmark.md +195 -0
  24. package/docs/design/design-architect-rationale.md +123 -0
  25. package/docs/design/design-memory.md +61 -0
  26. package/docs/design/design-spec-schema.md +248 -0
  27. package/docs/design/design-system-lint.md +150 -0
  28. package/docs/design/divergent-generation.md +106 -0
  29. package/docs/design/effects-appropriateness.md +133 -0
  30. package/docs/design/fixtures/briefs/README.md +47 -0
  31. package/docs/design/fixtures/briefs/cadence.md +39 -0
  32. package/docs/design/fixtures/briefs/plume.md +39 -0
  33. package/docs/design/fixtures/briefs/slipstream.md +39 -0
  34. package/docs/design/fixtures/briefs/tender.md +39 -0
  35. package/docs/design/fixtures/briefs/voltage.md +39 -0
  36. package/docs/design/fixtures/runs/b-vs-c-baseline/cadence/arm-b/run-1.html +364 -0
  37. package/docs/design/fixtures/runs/b-vs-c-baseline/cadence/arm-b/run-2.html +420 -0
  38. package/docs/design/fixtures/runs/b-vs-c-baseline/cadence/arm-b/run-3.html +506 -0
  39. package/docs/design/fixtures/runs/b-vs-c-baseline/plume/arm-b/run-1.html +611 -0
  40. package/docs/design/fixtures/runs/b-vs-c-baseline/plume/arm-b/run-2.html +594 -0
  41. package/docs/design/fixtures/runs/b-vs-c-baseline/plume/arm-b/run-3.html +817 -0
  42. package/docs/design/fixtures/runs/b-vs-c-baseline/runs.json +175 -0
  43. package/docs/design/fixtures/runs/b-vs-c-baseline/scorecard.json +138 -0
  44. package/docs/design/fixtures/runs/b-vs-c-baseline/slipstream/arm-b/run-1.html +373 -0
  45. package/docs/design/fixtures/runs/b-vs-c-baseline/slipstream/arm-b/run-2.html +398 -0
  46. package/docs/design/fixtures/runs/b-vs-c-baseline/slipstream/arm-b/run-3.html +595 -0
  47. package/docs/design/fixtures/runs/b-vs-c-baseline/tender/arm-b/run-1.html +531 -0
  48. package/docs/design/fixtures/runs/b-vs-c-baseline/tender/arm-b/run-2.html +565 -0
  49. package/docs/design/fixtures/runs/b-vs-c-baseline/tender/arm-b/run-3.html +674 -0
  50. package/docs/design/fixtures/runs/b-vs-c-baseline/voltage/arm-b/run-1.html +388 -0
  51. package/docs/design/fixtures/runs/b-vs-c-baseline/voltage/arm-b/run-2.html +463 -0
  52. package/docs/design/fixtures/runs/b-vs-c-baseline/voltage/arm-b/run-3.html +568 -0
  53. package/docs/design/fixtures/runs/full-abc/cadence/arm-a/run-1.html +562 -0
  54. package/docs/design/fixtures/runs/full-abc/cadence/arm-a/run-2.html +618 -0
  55. package/docs/design/fixtures/runs/full-abc/cadence/arm-a/run-3.html +618 -0
  56. package/docs/design/fixtures/runs/full-abc/cadence/arm-b/run-1.html +364 -0
  57. package/docs/design/fixtures/runs/full-abc/cadence/arm-b/run-2.html +420 -0
  58. package/docs/design/fixtures/runs/full-abc/cadence/arm-b/run-3.html +506 -0
  59. package/docs/design/fixtures/runs/full-abc/plume/arm-a/run-1.html +527 -0
  60. package/docs/design/fixtures/runs/full-abc/plume/arm-a/run-2.html +445 -0
  61. package/docs/design/fixtures/runs/full-abc/plume/arm-a/run-3.html +483 -0
  62. package/docs/design/fixtures/runs/full-abc/plume/arm-b/run-1.html +611 -0
  63. package/docs/design/fixtures/runs/full-abc/plume/arm-b/run-2.html +594 -0
  64. package/docs/design/fixtures/runs/full-abc/plume/arm-b/run-3.html +817 -0
  65. package/docs/design/fixtures/runs/full-abc/runs.json +190 -0
  66. package/docs/design/fixtures/runs/full-abc/scorecard.json +144 -0
  67. package/docs/design/fixtures/runs/full-abc/slipstream/arm-a/run-1.html +496 -0
  68. package/docs/design/fixtures/runs/full-abc/slipstream/arm-a/run-2.html +447 -0
  69. package/docs/design/fixtures/runs/full-abc/slipstream/arm-a/run-3.html +564 -0
  70. package/docs/design/fixtures/runs/full-abc/slipstream/arm-b/run-1.html +373 -0
  71. package/docs/design/fixtures/runs/full-abc/slipstream/arm-b/run-2.html +398 -0
  72. package/docs/design/fixtures/runs/full-abc/slipstream/arm-b/run-3.html +595 -0
  73. package/docs/design/fixtures/runs/full-abc/tender/arm-a/run-1.html +622 -0
  74. package/docs/design/fixtures/runs/full-abc/tender/arm-a/run-2.html +475 -0
  75. package/docs/design/fixtures/runs/full-abc/tender/arm-a/run-3.html +660 -0
  76. package/docs/design/fixtures/runs/full-abc/tender/arm-b/run-1.html +531 -0
  77. package/docs/design/fixtures/runs/full-abc/tender/arm-b/run-2.html +565 -0
  78. package/docs/design/fixtures/runs/full-abc/tender/arm-b/run-3.html +674 -0
  79. package/docs/design/fixtures/runs/full-abc/voltage/arm-a/run-1.html +525 -0
  80. package/docs/design/fixtures/runs/full-abc/voltage/arm-a/run-2.html +446 -0
  81. package/docs/design/fixtures/runs/full-abc/voltage/arm-a/run-3.html +463 -0
  82. package/docs/design/fixtures/runs/full-abc/voltage/arm-b/run-1.html +388 -0
  83. package/docs/design/fixtures/runs/full-abc/voltage/arm-b/run-2.html +463 -0
  84. package/docs/design/fixtures/runs/full-abc/voltage/arm-b/run-3.html +568 -0
  85. package/docs/design/fixtures/runs/full-abc-opus/cadence/arm-a/run-1.html +1068 -0
  86. package/docs/design/fixtures/runs/full-abc-opus/cadence/arm-a/run-2.html +1423 -0
  87. package/docs/design/fixtures/runs/full-abc-opus/cadence/arm-a/run-3.html +1245 -0
  88. package/docs/design/fixtures/runs/full-abc-opus/cadence/arm-b/run-1.html +305 -0
  89. package/docs/design/fixtures/runs/full-abc-opus/cadence/arm-b/run-2.html +327 -0
  90. package/docs/design/fixtures/runs/full-abc-opus/cadence/arm-b/run-3.html +428 -0
  91. package/docs/design/fixtures/runs/full-abc-opus/plume/arm-a/run-1.html +1270 -0
  92. package/docs/design/fixtures/runs/full-abc-opus/plume/arm-a/run-2.html +1172 -0
  93. package/docs/design/fixtures/runs/full-abc-opus/plume/arm-a/run-3.html +1532 -0
  94. package/docs/design/fixtures/runs/full-abc-opus/plume/arm-b/run-1.html +315 -0
  95. package/docs/design/fixtures/runs/full-abc-opus/plume/arm-b/run-2.html +342 -0
  96. package/docs/design/fixtures/runs/full-abc-opus/plume/arm-b/run-3.html +353 -0
  97. package/docs/design/fixtures/runs/full-abc-opus/runs.json +190 -0
  98. package/docs/design/fixtures/runs/full-abc-opus/scorecard.json +144 -0
  99. package/docs/design/fixtures/runs/full-abc-opus/slipstream/arm-a/run-1.html +345 -0
  100. package/docs/design/fixtures/runs/full-abc-opus/slipstream/arm-a/run-2.html +396 -0
  101. package/docs/design/fixtures/runs/full-abc-opus/slipstream/arm-a/run-3.html +502 -0
  102. package/docs/design/fixtures/runs/full-abc-opus/slipstream/arm-b/run-1.html +408 -0
  103. package/docs/design/fixtures/runs/full-abc-opus/slipstream/arm-b/run-2.html +446 -0
  104. package/docs/design/fixtures/runs/full-abc-opus/slipstream/arm-b/run-3.html +496 -0
  105. package/docs/design/fixtures/runs/full-abc-opus/tender/arm-a/run-1.html +813 -0
  106. package/docs/design/fixtures/runs/full-abc-opus/tender/arm-a/run-2.html +711 -0
  107. package/docs/design/fixtures/runs/full-abc-opus/tender/arm-a/run-3.html +721 -0
  108. package/docs/design/fixtures/runs/full-abc-opus/tender/arm-b/run-1.html +280 -0
  109. package/docs/design/fixtures/runs/full-abc-opus/tender/arm-b/run-2.html +291 -0
  110. package/docs/design/fixtures/runs/full-abc-opus/tender/arm-b/run-3.html +366 -0
  111. package/docs/design/fixtures/runs/full-abc-opus/voltage/arm-a/run-1.html +1010 -0
  112. package/docs/design/fixtures/runs/full-abc-opus/voltage/arm-a/run-2.html +836 -0
  113. package/docs/design/fixtures/runs/full-abc-opus/voltage/arm-a/run-3.html +930 -0
  114. package/docs/design/fixtures/runs/full-abc-opus/voltage/arm-b/run-1.html +407 -0
  115. package/docs/design/fixtures/runs/full-abc-opus/voltage/arm-b/run-2.html +396 -0
  116. package/docs/design/fixtures/runs/full-abc-opus/voltage/arm-b/run-3.html +529 -0
  117. package/docs/design/foundations/brutalist.css +294 -0
  118. package/docs/design/foundations/editorial.css +300 -0
  119. package/docs/design/foundations/minimal-luxury.css +295 -0
  120. package/docs/design/foundations/technical.css +293 -0
  121. package/docs/design/foundations/warm-photo.css +299 -0
  122. package/docs/design/reference-corpus.md +1726 -0
  123. package/docs/design/render-critique-loop.md +57 -0
  124. package/docs/spec-graph-schema.md +397 -0
  125. package/package.json +1 -1
  126. package/scripts/bench-scorecard.mjs +239 -0
  127. package/scripts/build-spec-graph.mjs +509 -0
  128. package/scripts/check-native-conflicts.sh +200 -0
  129. package/scripts/classify-lane.sh +0 -7
  130. package/scripts/design-system-lint.mjs +993 -0
  131. package/scripts/graph-query.sh +486 -0
  132. package/scripts/transition-label.sh +10 -2
  133. package/scripts/validate-spec-graph.sh +423 -0
  134. package/templates/workflows/forgedock-review.yml +96 -0
@@ -0,0 +1,200 @@
1
+ #!/usr/bin/env bash
2
+ # SPDX-FileCopyrightText: Copyright (c) RapierCraft Studios
3
+ # SPDX-License-Identifier: AGPL-3.0-or-later
4
+ #
5
+ # check-native-conflicts.sh — Validate that ForgeDock command names do not shadow
6
+ # native Claude Code built-in slash commands.
7
+ #
8
+ # ForgeDock commands are installed as custom slash commands in ~/.claude/commands/.
9
+ # If a command file shares its name with a native Claude Code built-in (e.g. /resume,
10
+ # /status), it shadows the native command entirely — users lose access to core
11
+ # Claude Code functionality.
12
+ #
13
+ # This script:
14
+ # 1. Maintains a blocklist of known native Claude Code slash command names.
15
+ # 2. Scans all .md files in commands/ (recursively) and extracts the command
16
+ # name (filename without .md extension).
17
+ # 3. Checks each command name against the blocklist (case-insensitive).
18
+ # 4. Exits non-zero if any conflict is found, printing the offending file(s).
19
+ #
20
+ # Usage:
21
+ # check-native-conflicts.sh [<commands_dir>]
22
+ # commands_dir: path to the commands/ directory (default: ./commands)
23
+ #
24
+ # Exit codes:
25
+ # 0 no conflicts found
26
+ # 1 one or more conflicts found (names listed to stderr)
27
+ # 2 usage / dependency error (commands_dir not found)
28
+ #
29
+ # <!-- Added: forge#1074 -->
30
+
31
+ set -euo pipefail
32
+
33
+ COMMANDS_DIR="${1:-./commands}"
34
+
35
+ if [ ! -d "$COMMANDS_DIR" ]; then
36
+ echo "ERROR: commands directory not found: $COMMANDS_DIR" >&2
37
+ echo "Usage: $0 [<commands_dir>]" >&2
38
+ exit 2
39
+ fi
40
+
41
+ # ---------------------------------------------------------------------------
42
+ # Blocklist of known native Claude Code slash command names.
43
+ # These are names that Claude Code reserves as built-in commands.
44
+ # Command names are always lowercase — comparison is case-insensitive.
45
+ #
46
+ # To update this list: add the new native command name (without leading /).
47
+ # Keep entries alphabetically sorted within logical groups for readability.
48
+ # ---------------------------------------------------------------------------
49
+ NATIVE_COMMANDS=(
50
+ # Core session management
51
+ resume
52
+ status
53
+ exit
54
+ clear
55
+ compact
56
+ config
57
+ memory
58
+ permissions
59
+ rewind
60
+ init
61
+
62
+ # Model and capability controls
63
+ model
64
+ plan
65
+ effort
66
+ focus
67
+
68
+ # Code and diff operations
69
+ diff
70
+ review
71
+ debug
72
+ run
73
+ verify
74
+ branch
75
+ rename
76
+ copy
77
+
78
+ # Help and onboarding
79
+ help
80
+ doctor
81
+ feedback
82
+ setup-bedrock
83
+ setup-vertex
84
+ terminal-setup
85
+ web-setup
86
+ team-onboarding
87
+ upgrade
88
+
89
+ # Agents and orchestration
90
+ agents
91
+ context
92
+ tasks
93
+ fork
94
+ batch
95
+ loop
96
+ goal
97
+ background
98
+ teleport
99
+ remote-control
100
+ remote-env
101
+
102
+ # Skills and plugins
103
+ skills
104
+ plugin
105
+ reload-plugins
106
+ reload-skills
107
+ run-skill-generator
108
+
109
+ # Review and code quality
110
+ code-review
111
+ security-review
112
+ simplify
113
+ ultraplan
114
+ ultrareview
115
+
116
+ # Usage and billing
117
+ usage
118
+ extra-usage
119
+ usage-credits
120
+
121
+ # UI and display
122
+ theme
123
+ tui
124
+ statusline
125
+ powerup
126
+
127
+ # Workflow and scheduling
128
+ schedule
129
+ workflows
130
+ stop
131
+ recap
132
+
133
+ # MCP
134
+ mcp
135
+
136
+ # Miscellaneous
137
+ btw
138
+ sandbox
139
+ voice
140
+ radio
141
+ stickers
142
+ release-notes
143
+ privacy-settings
144
+ setup
145
+ )
146
+
147
+ # ---------------------------------------------------------------------------
148
+ # Build a fast-lookup set from the blocklist (bash associative array).
149
+ # ---------------------------------------------------------------------------
150
+ declare -A BLOCKLIST
151
+ for name in "${NATIVE_COMMANDS[@]}"; do
152
+ BLOCKLIST["${name,,}"]=1 # store as lowercase
153
+ done
154
+
155
+ # ---------------------------------------------------------------------------
156
+ # Scan commands/ for .md files and check each basename against the blocklist.
157
+ #
158
+ # Scope: TOP-LEVEL files in commands/ only.
159
+ #
160
+ # ForgeDock installs commands preserving their relative path:
161
+ # commands/foo.md → ~/.claude/commands/foo.md → /foo
162
+ # commands/work-on/bar.md → ~/.claude/commands/work-on/bar.md → /work-on/bar
163
+ #
164
+ # Only top-level .md files resolve to a root-level slash command (e.g. /foo).
165
+ # Sub-phase files in subdirectories (commands/work-on/*.md) resolve to namespaced
166
+ # commands (/work-on/bar) and cannot shadow native root commands.
167
+ # ---------------------------------------------------------------------------
168
+ CONFLICTS=()
169
+
170
+ while IFS= read -r -d '' md_file; do
171
+ # Extract command name: basename without .md extension, lowercased.
172
+ basename_no_ext="${md_file##*/}"
173
+ basename_no_ext="${basename_no_ext%.md}"
174
+ cmd_name="${basename_no_ext,,}"
175
+
176
+ if [[ -n "${BLOCKLIST[$cmd_name]+_}" ]]; then
177
+ CONFLICTS+=("$md_file (conflicts with native /$cmd_name)")
178
+ fi
179
+ done < <(find "$COMMANDS_DIR" -maxdepth 1 -name "*.md" -print0 | sort -z)
180
+
181
+ # ---------------------------------------------------------------------------
182
+ # Report and exit.
183
+ # ---------------------------------------------------------------------------
184
+ if [ ${#CONFLICTS[@]} -gt 0 ]; then
185
+ echo "ERROR: ForgeDock command name(s) shadow native Claude Code built-in commands:" >&2
186
+ echo "" >&2
187
+ for conflict in "${CONFLICTS[@]}"; do
188
+ echo " $conflict" >&2
189
+ done
190
+ echo "" >&2
191
+ echo "Native Claude Code commands are inaccessible when a ForgeDock command" >&2
192
+ echo "shares their name. Rename the conflicting file(s) before publishing." >&2
193
+ echo "" >&2
194
+ echo "To update the native command blocklist, edit:" >&2
195
+ echo " scripts/check-native-conflicts.sh (NATIVE_COMMANDS array)" >&2
196
+ exit 1
197
+ fi
198
+
199
+ echo "OK: No native Claude Code command conflicts detected in $COMMANDS_DIR"
200
+ exit 0
@@ -71,13 +71,6 @@ MILESTONE_TITLE=$(gh issue view "$ISSUE_NUMBER" "${GH_REPO_ARGS[@]}" --json mile
71
71
  }
72
72
  rm -f "$GH_STDERR_TMP"
73
73
 
74
- # Export universal script environment so per-repo scripts can call back into universal scripts.
75
- # Per-repo scripts (.forgedock/scripts/{operation}.sh) source these to delegate to universal ones.
76
- export FORGEDOCK_SCRIPTS
77
- FORGEDOCK_SCRIPTS="$(cd "$(dirname "$0")" && pwd)"
78
- export FORGEDOCK_HOME
79
- FORGEDOCK_HOME="$(cd "$(dirname "$0")/.." && pwd)"
80
-
81
74
  # Resolve staging branch name from forge.yaml (branches.staging), defaulting to "staging".
82
75
  # Uses yq if available; falls back gracefully when forge.yaml is absent or yq is not installed.
83
76
  STAGING_BRANCH=$(yq '.branches.staging // "staging"' forge.yaml 2>/dev/null || echo 'staging')