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.
- package/README.md +34 -1
- package/bin/cross-publish.mjs +344 -0
- package/bin/forgedock.mjs +229 -17
- package/commands/autopilot.md +77 -0
- package/commands/design-bench.md +176 -0
- package/commands/design-render-critique-loop.md +103 -0
- package/commands/design.md +259 -0
- package/commands/issue.md +7 -3
- package/commands/orchestrate.md +121 -0
- package/commands/{resume.md → pipeline-resume.md} +4 -4
- package/commands/{status.md → pipeline-status.md} +1 -1
- package/commands/qa-sweep.md +37 -2
- package/commands/quality-gate.md +57 -0
- package/commands/review-pr-staging.md +158 -2
- package/commands/test-gate.md +929 -0
- package/commands/work-on/build/implement.md +5 -3
- package/commands/work-on.md +53 -3
- package/docs/CI.md +177 -0
- package/docs/FORGE-PROTOCOL.md +324 -0
- package/docs/articles/b-vs-c-baseline.md +210 -0
- package/docs/articles/full-abc-benchmark.md +205 -0
- package/docs/articles/selective-spec-loading-token-savings.md +140 -0
- package/docs/design/abc-benchmark.md +195 -0
- package/docs/design/design-architect-rationale.md +123 -0
- package/docs/design/design-memory.md +61 -0
- package/docs/design/design-spec-schema.md +248 -0
- package/docs/design/design-system-lint.md +150 -0
- package/docs/design/divergent-generation.md +106 -0
- package/docs/design/effects-appropriateness.md +133 -0
- package/docs/design/fixtures/briefs/README.md +47 -0
- package/docs/design/fixtures/briefs/cadence.md +39 -0
- package/docs/design/fixtures/briefs/plume.md +39 -0
- package/docs/design/fixtures/briefs/slipstream.md +39 -0
- package/docs/design/fixtures/briefs/tender.md +39 -0
- package/docs/design/fixtures/briefs/voltage.md +39 -0
- package/docs/design/fixtures/runs/b-vs-c-baseline/cadence/arm-b/run-1.html +364 -0
- package/docs/design/fixtures/runs/b-vs-c-baseline/cadence/arm-b/run-2.html +420 -0
- package/docs/design/fixtures/runs/b-vs-c-baseline/cadence/arm-b/run-3.html +506 -0
- package/docs/design/fixtures/runs/b-vs-c-baseline/plume/arm-b/run-1.html +611 -0
- package/docs/design/fixtures/runs/b-vs-c-baseline/plume/arm-b/run-2.html +594 -0
- package/docs/design/fixtures/runs/b-vs-c-baseline/plume/arm-b/run-3.html +817 -0
- package/docs/design/fixtures/runs/b-vs-c-baseline/runs.json +175 -0
- package/docs/design/fixtures/runs/b-vs-c-baseline/scorecard.json +138 -0
- package/docs/design/fixtures/runs/b-vs-c-baseline/slipstream/arm-b/run-1.html +373 -0
- package/docs/design/fixtures/runs/b-vs-c-baseline/slipstream/arm-b/run-2.html +398 -0
- package/docs/design/fixtures/runs/b-vs-c-baseline/slipstream/arm-b/run-3.html +595 -0
- package/docs/design/fixtures/runs/b-vs-c-baseline/tender/arm-b/run-1.html +531 -0
- package/docs/design/fixtures/runs/b-vs-c-baseline/tender/arm-b/run-2.html +565 -0
- package/docs/design/fixtures/runs/b-vs-c-baseline/tender/arm-b/run-3.html +674 -0
- package/docs/design/fixtures/runs/b-vs-c-baseline/voltage/arm-b/run-1.html +388 -0
- package/docs/design/fixtures/runs/b-vs-c-baseline/voltage/arm-b/run-2.html +463 -0
- package/docs/design/fixtures/runs/b-vs-c-baseline/voltage/arm-b/run-3.html +568 -0
- package/docs/design/fixtures/runs/full-abc/cadence/arm-a/run-1.html +562 -0
- package/docs/design/fixtures/runs/full-abc/cadence/arm-a/run-2.html +618 -0
- package/docs/design/fixtures/runs/full-abc/cadence/arm-a/run-3.html +618 -0
- package/docs/design/fixtures/runs/full-abc/cadence/arm-b/run-1.html +364 -0
- package/docs/design/fixtures/runs/full-abc/cadence/arm-b/run-2.html +420 -0
- package/docs/design/fixtures/runs/full-abc/cadence/arm-b/run-3.html +506 -0
- package/docs/design/fixtures/runs/full-abc/plume/arm-a/run-1.html +527 -0
- package/docs/design/fixtures/runs/full-abc/plume/arm-a/run-2.html +445 -0
- package/docs/design/fixtures/runs/full-abc/plume/arm-a/run-3.html +483 -0
- package/docs/design/fixtures/runs/full-abc/plume/arm-b/run-1.html +611 -0
- package/docs/design/fixtures/runs/full-abc/plume/arm-b/run-2.html +594 -0
- package/docs/design/fixtures/runs/full-abc/plume/arm-b/run-3.html +817 -0
- package/docs/design/fixtures/runs/full-abc/runs.json +190 -0
- package/docs/design/fixtures/runs/full-abc/scorecard.json +144 -0
- package/docs/design/fixtures/runs/full-abc/slipstream/arm-a/run-1.html +496 -0
- package/docs/design/fixtures/runs/full-abc/slipstream/arm-a/run-2.html +447 -0
- package/docs/design/fixtures/runs/full-abc/slipstream/arm-a/run-3.html +564 -0
- package/docs/design/fixtures/runs/full-abc/slipstream/arm-b/run-1.html +373 -0
- package/docs/design/fixtures/runs/full-abc/slipstream/arm-b/run-2.html +398 -0
- package/docs/design/fixtures/runs/full-abc/slipstream/arm-b/run-3.html +595 -0
- package/docs/design/fixtures/runs/full-abc/tender/arm-a/run-1.html +622 -0
- package/docs/design/fixtures/runs/full-abc/tender/arm-a/run-2.html +475 -0
- package/docs/design/fixtures/runs/full-abc/tender/arm-a/run-3.html +660 -0
- package/docs/design/fixtures/runs/full-abc/tender/arm-b/run-1.html +531 -0
- package/docs/design/fixtures/runs/full-abc/tender/arm-b/run-2.html +565 -0
- package/docs/design/fixtures/runs/full-abc/tender/arm-b/run-3.html +674 -0
- package/docs/design/fixtures/runs/full-abc/voltage/arm-a/run-1.html +525 -0
- package/docs/design/fixtures/runs/full-abc/voltage/arm-a/run-2.html +446 -0
- package/docs/design/fixtures/runs/full-abc/voltage/arm-a/run-3.html +463 -0
- package/docs/design/fixtures/runs/full-abc/voltage/arm-b/run-1.html +388 -0
- package/docs/design/fixtures/runs/full-abc/voltage/arm-b/run-2.html +463 -0
- package/docs/design/fixtures/runs/full-abc/voltage/arm-b/run-3.html +568 -0
- package/docs/design/fixtures/runs/full-abc-opus/cadence/arm-a/run-1.html +1068 -0
- package/docs/design/fixtures/runs/full-abc-opus/cadence/arm-a/run-2.html +1423 -0
- package/docs/design/fixtures/runs/full-abc-opus/cadence/arm-a/run-3.html +1245 -0
- package/docs/design/fixtures/runs/full-abc-opus/cadence/arm-b/run-1.html +305 -0
- package/docs/design/fixtures/runs/full-abc-opus/cadence/arm-b/run-2.html +327 -0
- package/docs/design/fixtures/runs/full-abc-opus/cadence/arm-b/run-3.html +428 -0
- package/docs/design/fixtures/runs/full-abc-opus/plume/arm-a/run-1.html +1270 -0
- package/docs/design/fixtures/runs/full-abc-opus/plume/arm-a/run-2.html +1172 -0
- package/docs/design/fixtures/runs/full-abc-opus/plume/arm-a/run-3.html +1532 -0
- package/docs/design/fixtures/runs/full-abc-opus/plume/arm-b/run-1.html +315 -0
- package/docs/design/fixtures/runs/full-abc-opus/plume/arm-b/run-2.html +342 -0
- package/docs/design/fixtures/runs/full-abc-opus/plume/arm-b/run-3.html +353 -0
- package/docs/design/fixtures/runs/full-abc-opus/runs.json +190 -0
- package/docs/design/fixtures/runs/full-abc-opus/scorecard.json +144 -0
- package/docs/design/fixtures/runs/full-abc-opus/slipstream/arm-a/run-1.html +345 -0
- package/docs/design/fixtures/runs/full-abc-opus/slipstream/arm-a/run-2.html +396 -0
- package/docs/design/fixtures/runs/full-abc-opus/slipstream/arm-a/run-3.html +502 -0
- package/docs/design/fixtures/runs/full-abc-opus/slipstream/arm-b/run-1.html +408 -0
- package/docs/design/fixtures/runs/full-abc-opus/slipstream/arm-b/run-2.html +446 -0
- package/docs/design/fixtures/runs/full-abc-opus/slipstream/arm-b/run-3.html +496 -0
- package/docs/design/fixtures/runs/full-abc-opus/tender/arm-a/run-1.html +813 -0
- package/docs/design/fixtures/runs/full-abc-opus/tender/arm-a/run-2.html +711 -0
- package/docs/design/fixtures/runs/full-abc-opus/tender/arm-a/run-3.html +721 -0
- package/docs/design/fixtures/runs/full-abc-opus/tender/arm-b/run-1.html +280 -0
- package/docs/design/fixtures/runs/full-abc-opus/tender/arm-b/run-2.html +291 -0
- package/docs/design/fixtures/runs/full-abc-opus/tender/arm-b/run-3.html +366 -0
- package/docs/design/fixtures/runs/full-abc-opus/voltage/arm-a/run-1.html +1010 -0
- package/docs/design/fixtures/runs/full-abc-opus/voltage/arm-a/run-2.html +836 -0
- package/docs/design/fixtures/runs/full-abc-opus/voltage/arm-a/run-3.html +930 -0
- package/docs/design/fixtures/runs/full-abc-opus/voltage/arm-b/run-1.html +407 -0
- package/docs/design/fixtures/runs/full-abc-opus/voltage/arm-b/run-2.html +396 -0
- package/docs/design/fixtures/runs/full-abc-opus/voltage/arm-b/run-3.html +529 -0
- package/docs/design/foundations/brutalist.css +294 -0
- package/docs/design/foundations/editorial.css +300 -0
- package/docs/design/foundations/minimal-luxury.css +295 -0
- package/docs/design/foundations/technical.css +293 -0
- package/docs/design/foundations/warm-photo.css +299 -0
- package/docs/design/reference-corpus.md +1726 -0
- package/docs/design/render-critique-loop.md +57 -0
- package/docs/spec-graph-schema.md +397 -0
- package/package.json +1 -1
- package/scripts/bench-scorecard.mjs +239 -0
- package/scripts/build-spec-graph.mjs +509 -0
- package/scripts/check-native-conflicts.sh +200 -0
- package/scripts/classify-lane.sh +0 -7
- package/scripts/design-system-lint.mjs +993 -0
- package/scripts/graph-query.sh +486 -0
- package/scripts/transition-label.sh +10 -2
- package/scripts/validate-spec-graph.sh +423 -0
- 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
|
package/scripts/classify-lane.sh
CHANGED
|
@@ -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')
|