Skip to content

Ship staged skill release - #163

Merged
RomanOstr merged 16 commits into
mainfrom
release/local
Aug 1, 2026
Merged

Ship staged skill release#163
RomanOstr merged 16 commits into
mainfrom
release/local

Conversation

@RomanOstr

Copy link
Copy Markdown
Contributor

Staged skill lifecycle release branch.

# Conflicts:
#	README.md
#	skills/ceratops-repo-lifecycle/scripts/ship-repository.py
…ase-local-merge

# Conflicts:
#	AGENTS.history.json
#	AGENTS.md
#	CHANGELOG.md
#	CONTRIBUTING.md
#	README.md
#	skills/ceratops-repo-lifecycle/references/skill-sections-template.json
#	skills/ceratops-skill-lifecycle/references/make-repo-compatible.md
#	skills/ceratops-skill-lifecycle/references/update.md
#	skills/ceratops-skill-lifecycle/scripts/runtime/resolve-lifecycle-bundle.py
#	skills/ceratops-skill-lifecycle/scripts/skills-consistency-source-validator.py
#	skills/ceratops-skill-lifecycle/scripts/templates/skill-sections-template.json
#	skills/skill-sections.json
#	templates/skill-sections-template.json
#	tests/test_skill_runtime_multi_repo.py
…e-local-merge

# Conflicts:
#	AGENTS.history.json
#	skills/ceratops-repo-lifecycle/scripts/ship-repository.py
#	skills/ceratops-skill-lifecycle/SKILL.md
@RomanOstr
RomanOstr merged commit 9d978c1 into main Aug 1, 2026
3 checks passed
@RomanOstr
RomanOstr deleted the release/local branch August 1, 2026 19:09

@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: 2bbba03a55

ℹ️ 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".

Comment on lines +163 to +164
if source.is_dir():
shutil.copytree(source, destination, ignore=shutil.ignore_patterns(*IGNORED_NAMES), dirs_exist_ok=True)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Reject links nested inside runtime payload directories

When a declared payload is a directory containing a symlink or reparse point, only the directory itself is checked before copytree recursively follows the nested link. A compatible repository can therefore copy files from outside its checkout—such as credentials or other private data—into an installed skill. Traverse and reject unsafe descendants before copying, as the managed runtime builder already does.

Useful? React with 👍 / 👎.

Comment on lines +234 to +235
for skill in skills:
replace_skill(staging, destination, source_id, skill)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Validate every destination before replacing any skill

When multiple skills are selected and a later destination is foreign-owned or has malformed ownership metadata, earlier destinations have already been deleted and replaced before the later check raises. The installer consequently exits nonzero while leaving a partially upgraded, mixed-version runtime. Preflight ownership for the entire selected set before this loop, or make the replacements rollback-safe.

Useful? React with 👍 / 👎.

Comment on lines +73 to +76
USER_HOME_RE = re.compile(
r"(?:[A-Z]:[\\/]+Users[\\/]+[^\\/\s\"']+|"
r"[\\/]+(?:Users|home)[\\/]+[^\\/\s\"']+)",
re.IGNORECASE,

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 Redact the actual home directory on root-style Unix accounts

When --include-run is used under an account whose home is not /home/<name>—notably /root in containers—the sanitizer does not match the user's home path, so semantic summaries expose the full local absolute path. The added closure-mode test already fails in such an environment because /root/private/tool.py remains visible; derive and redact Path.home() (and the configured profile root) rather than recognizing only /home and /Users layouts.

Useful? React with 👍 / 👎.

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