Skip to content

feat(standard-constitution): sync §6.4 contribution targets, §5.6 skill packaging — v1.40 - #21

Merged
UnbreakableMJ merged 1 commit into
mainfrom
feat/standard-v1.40-sync
Jul 27, 2026
Merged

feat(standard-constitution): sync §6.4 contribution targets, §5.6 skill packaging — v1.40#21
UnbreakableMJ merged 1 commit into
mainfrom
feat/standard-v1.40-sync

Conversation

@UnbreakableMJ

Copy link
Copy Markdown
Contributor

What

Skill-side sync of Spacecraft-Software/Standard#19 at the same version and date (v1.40, 2026-07-27).

§6.4 — Authorized Contribution Targets (Non-Negotiable)

Names the authorized publication namespaces — github.com/Spacecraft-Software and github.com/UnbreakableMJ, with a future Spacecraft Software-controlled host (Gitway) inheriting — and makes every other destination outbound and default-deny. Automation never initiates one; only the maintainer, explicitly and per contribution, may authorize. Package registries and external issue trackers are in scope. Forks under our namespaces stay free — turning a fork branch into an upstream PR is the gated act. §4.2's carry-the-patch route is preferred to upstreaming, and the free-software/GNU posture yields the identity clauses but not this one.

§5.6 — Skill Packaging Requirements

Caps a SKILL.md frontmatter description at 1000 rendered characters against the loader's hard 1024 limit, defines rendered for YAML folded scalars, and requires the cap to be machine-enforced in CI and in the command that produces the bundle — a developer-installed git hook is opt-in per clone and is not the gate.

This skill's own description

Re-cut to 973 characters under the new cap: §6.4 contribution targets and §5.6 skill packaging added to the encoded-sections list, §8 Texinfo and the now-redundant §11 palette family dropped to make room.

§16 gains a checklist bullet for each section. Bundles (.zip / .skill) rebuilt.

Verification

  • find . -name SKILL.md -not -path './.git/*' | xargs python3 .githooks/check-description-length.py → clean across all 63 skills
  • This skill's rendered description measures 973 chars
  • reuse lint → 606/606 files compliant
  • No stale 1.39 strings left in the masthead or frontmatter

Follow-up

The §5.6 gate itself (CI step + construct ship pre-pack check) lands in a separate PR — this one only carries the normative text.

🤖 Generated with Claude Code

…ll packaging — v1.40

Mirrors Spacecraft-Software/Standard#19 at the same version and date.

§6.4 names the authorized publication namespaces (Spacecraft-Software,
UnbreakableMJ, plus any future Spacecraft Software-controlled host) and makes
every other destination outbound and default-deny. Automation never
initiates; only the maintainer, explicitly and per contribution, may
authorize one. Package registries and external issue trackers are covered.
Forks under our namespaces stay free — turning a fork branch into an
upstream PR is the gated act. The GNU posture yields the identity clauses
but not this one.

§5.6 caps a SKILL.md frontmatter description at 1000 rendered characters
against the loader's hard 1024 limit, defines "rendered" for YAML folded
scalars, and requires the cap to be machine-enforced in CI and in the
command that produces the bundle rather than by an opt-in git hook.

The frontmatter description is re-cut to 973 chars under the new §5.6 cap:
§6.4 and §5.6 added to the encoded-sections list, §8 Texinfo and the
redundant "§11 palette family" dropped. §16 gains a bullet for each section.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 507e2ab44d

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

|------|--------|
| Description cap | A skill's frontmatter `description` MUST NOT exceed **1000 rendered characters**. The consuming loader's absolute limit is **1024**; 1000 is the deliberate 24-character margin for encoding and trailing-newline edge cases. |
| Rendered, not raw | "Rendered" means the string the loader sees. A YAML folded scalar (`description: >`) joins its wrapped lines with single spaces and retains a trailing newline, so the raw line lengths are not the measurement. Block (`>` / `\|`) and single-line plain or quoted forms alike are measured after folding. |
| Machine-enforced | The cap MUST be checked by an automated gate that runs both in the skill repository's CI on every pull request and push to the default branch, and in whatever command produces the distributable bundle. A developer-installed git hook is a convenience, never the gate — hooks are opt-in per clone and cannot be relied on. |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Implement the mandatory description gates before shipping

This declares the check mandatory in both CI and the bundle-producing command, but the inspected .github/workflows/ci.yml only runs REUSE/config validation, while construct skill ship only checks whether both bundles changed and never validates the description. Consequently, a contributor without the opt-in hook can still merge and package an over-limit skill, producing a bundle that the loader rejects; the CI and ship-command checks need to land atomically with this rule rather than in the stated follow-up.

AGENTS.md reference: AGENTS.md:L11-L18

Useful? React with 👍 / 👎.

@UnbreakableMJ
UnbreakableMJ merged commit 0f85c84 into main Jul 27, 2026
1 check passed
@UnbreakableMJ
UnbreakableMJ deleted the feat/standard-v1.40-sync branch July 27, 2026 21:58
UnbreakableMJ added a commit that referenced this pull request Aug 5, 2026
…mption (#25)

The two repos disagreed about workflow. /spacecraft-software/standard/CLAUDE.md
states "Branch + PR, never push to main" for **both** the Standard and Construct
repos, while Construct's own maintainer-local CLAUDE.md claimed this repo was
"pre-authorised for auto-push on skill-directory changes" and CONTRIBUTING.md
step 5 was a bare `git push … main`. Construct's actual recent history (#11,
#21, #22) is squash-merged PRs, so the auto-push note was the outlier.

Resolved in favour of branch + PR:

- AGENTS.md gains a "Branch + PR — never push to main" hard rule (it had no
  push rule at all, only a pointer to CONTRIBUTING.md).
- CONTRIBUTING.md step 5 replaced: feature branch → PR → squash-merge → delete
  branch, with the gh invocation. Noted as a two-repo rule binding human and
  assistant-driven changes alike.
- Both state that an agent stops at opening the PR; merging is the maintainer's
  call and an agent never merges its own PR.
- The maintainer-local CLAUDE.md (gitignored) is updated to match.

Also flagged, not fixed: `construct skill ship` hard-codes
`git push origin main` (construct-cli/src/commands/ship.rs:235), so the shipped
tool can still bypass the rule. All three docs now say not to use it to publish
until it is reworked — branch + `gh pr create`, or stop after the signed commit.
That is a CLI behaviour change with schema, help-text, and test impact, so it is
left as a separate decision.

No skill directories touched, so no bundle rebuild. Description cap and
reuse lint pass.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant