Skip to content

Pulling base updates

A licensee fork isn’t a one-time grab. Every time the base (ddakit/scene-studio) adds a new skill, fixes a hook, or updates track routing or license-policy levels in AI_AUTOMATION.md, that change has to reach the fork for the license value to hold. /update-from-base is the spot that lets you receive it safely without knowing git rebase.

Auto-applicable, never touched, decided by a human. The fork between these three is the heart of it.

PathWhat
.claude/skills/{base-skill-name}/base skills (start, the two orchestrators, license-policy, pipeline-performance, etc.)
.claude/agents/*.mdthe 8 agents
.claude/hooks/*.sh, .claude/settings.jsonbase hooks and their registration
AI_AUTOMATION.mdthe domain SSOT (track routing, scene type, license-policy levels, S1–S8)
.env.example, .gitignoreplaceholder and standard

The rule is not to edit base skill bodies directly. To add your own skill, make it in a separate directory.

PathWhat
_workspace/{video_slug}/, _workspace/videos.json, _workspace/channel.jsonevery video in progress, the channel identity, the cache
.envOPENAI_API_KEY, REPLICATE_API_TOKEN, etc.
.claude/agent-memory/, .claude/state/, .claude/session-state/memory, runtime, session handoff
LICENSE, COMMERCIAL-LICENSE.mdlicense

Every video in progress and the channel identity are user-owned, so updates don’t touch them. It’s the spot where video work doesn’t get wiped out even when the base updates.

CLAUDE.md, AGENTS.md, README.md — three. Because edits from both the base and the user can land in them, they aren’t auto-updated; it shows the diff and asks. README.md is the spot /start rewrites with your channel’s name and identity, so overwriting it wholesale would erase your channel identity.

Calling /update-from-base or “pull base updates” goes through the following.

  1. Check for dirty with git status --porcelain. If there are unsaved changes, suggest git stash
  2. git fetch base main
  3. Classify changed files by area with git diff --name-status <last_synced_commit>..base/main
  4. Summarize the base-owned changes. N new skills, M updated hooks, whether AI_AUTOMATION.md changed
  5. On a user yes, apply only the base-owned paths
  6. Handle mixed files one at a time, choosing among three options (overwrite wholesale, 3-way merge, defer)
  7. Verify after applying and suggest a commit

For one-time setup, registering the base as a git remote is guided automatically by the first call.

Terminal window
git remote add base https://github.com/ddakit/scene-studio.git

The state file goes in .claude/state/base-upstream.json, and it looks only at the changes from last_synced_commit to base/main.

When the base updates the Fair Use bar or the number of transformation duties in license-policy, that change comes in as an auto-update spot. After receiving it, remix videos are verified with the updated policy. Copyright carries legal responsibility, so when the base tightens the policy, it’s safer to receive it.

When there’s a trace of you editing a base skill

Section titled “When there’s a trace of you editing a base skill”

If you’ve ever modified a file under .claude/skills/{base-skill}/ in a commit (detected via git log), that file is treated as mixed rather than base-owned, because auto-overwriting would erase your work. To avoid this, don’t edit the base skill directly; make a separate skill with the same trigger keywords in your own directory.

The same procedure followed at a beginner pace is in beginner updates.