跳到正文
cccskills
免费在 GitHub 公开

configure-workspaces

Prepare Riptide workspace settings by inspecting a project and proposing configuration files. Define Git worktrees, separate working directories for tasks, along with setup commands, copied files, and shared or machine-specific settings, then save approved configurations.

中文简介正在准备中。当前显示英语简介。

原文查看原文说明

Propose and generate workspace configuration files (.humanlayer/workspace.json and .humanlayer/workspace.local.json) for a repository

实测评分 未实测

查看安装方法

适用场景

  • Configure a task workspace for a single repository
  • Coordinate workspaces across related repositories
  • Separate shared settings from machine-specific overrides
  • Define setup commands and files to copy

包含的文件(1)

  • SKILL.md10.2 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

Purpose

This skill reads the project, proposes a concise workspace configuration, writes the approved files, and validates them.

The workspace config files control how worktrees are created when tasks use workspaceTiming = now in the Riptide task creation UI:

  • .humanlayer/workspace.json — shared team configuration, safe to commit
  • .humanlayer/workspace.local.json — machine-specific overrides, gitignored

Use plain, brief language. State each point as one human speaking to another.

Steps to follow

<step index=0>

Step 0: Select the repository

Check the current directory and home directory:

Bash(pwd)
Bash(printf '%s\n' "$HOME")
Bash(git rev-parse --show-toplevel)

If git rev-parse succeeds, use that repository root as the working directory. State the path in one short sentence.

If the current directory is the home directory and it is not inside a Git repository, ask one question:

Which repository should I configure? Send its path.

Use the same question when the current directory is not a Git repository. After the user gives a path, confirm it with git -C <path> rev-parse --show-toplevel and use the returned root.

</step> <step index=1>

Step 1: Read the project

Read any existing workspace config files:

Read(.humanlayer/workspace.json)
Read(.humanlayer/workspace.local.json)

Run all file reads and commands from the selected repository root.

Check for coordination-repo signals (Claude config, additional sibling repos):

Read(.claude/settings.json)
Bash(ls -la ../)
Read(package.json)
Read(Makefile)
Read(README.md)
Bash(git remote -v)

Use an existing workspace config as the starting point. Infer changes from the repository and the user's request.

</step> <step index=2>

Step 2: Build the proposal

Infer a complete proposal from project files and common defaults.

  • Use a single-repository config unless the project clearly coordinates related sibling repositories.
  • For one repository, use { "localPath": ".", "primary": true }.
  • For multiple repositories, include the related paths and mark exactly one primary repository.
  • Prefer the repository with the team's central Claude settings, MCP config, or agent policy as primary.
  • Use ~/.humanlayer/workspaces/{{ TASKSLUG }}/{{ REPOBASENAME }} as the default path template.
  • Use origin/main as the default source ref, or whatever default remote the user prefers (e.g. upstream/main - if there are multiple remotes, ask)
  • Infer a setup command from project scripts, package manager files, the Makefile, and the README.
  • Include local files that exist and are useful in a worktree, such as .env, .env.local, .env.development.local, .claude/settings.local.json, and .humanlayer/workspace.local.json.
  • Put machine-specific values in .humanlayer/workspace.local.json.

For multi-repository workspaces:

  • Sessions in the workspace launch in the primary repo's worktree by default.
  • Skills and instruction files (CLAUDE.md/AGENTS.md) are loaded from all repos in the workspace.
  • Repo-local .claude/settings*.json / MCP-style configuration only governs sessions launched from a repo — so the repo holding the team's central Claude settings, MCP config, or agent policy should usually be primary.

The first response after project inspection must show the proposed .humanlayer/workspace.json as a fenced json block. If local overrides are useful, show .humanlayer/workspace.local.json in a second fenced json block. End with one short line:

Tell me what to change, or approve this config.

When the user gives feedback, update and print the complete proposed JSON again.

</step> <step index=3>

Step 3: Validate the proposal

Validate the proposed config before asking for approval.

For single-repo projects, workspace.json looks like:

{
  "disabled": false,
  "pathTemplate": "~/.humanlayer/workspaces/{{ TASKSLUG }}/{{ REPOBASENAME }}",
  "branchTemplate": "{{ TASKSLUG }}",
  "sourceRef": "origin/main",
  "setupCommand": "",
  "copyGlobs": [
    ".env",
    ".env.local",
    ".env.development.local",
    ".claude/settings.local.json",
    ".humanlayer/workspace.local.json"
  ],
  "repos": [
    {
      "localPath": ".",
      "description": "Selected repository",
      "primary": true
    }
  ]
}

For multi-repo projects (coordination repos), workspace.json looks like:

{
  "disabled": false,
  "pathTemplate": "~/.humanlayer/workspaces/{{ TASKSLUG }}/{{ REPOBASENAME }}",
  "branchTemplate": "{{ TASKSLUG }}",
  "sourceRef": "origin/main",
  "setupCommand": "bun install",
  "copyGlobs": [
    ".env",
    ".env.local",
    ".humanlayer/workspace.local.json"
  ],
  "repos": [
    {
      "localPath": ".",
      "description": "Coordination repo",
      "primary": true
    },
    {
      "localPath": "../api",
      "description": "API service",
      "setupCommand": "bun install"
    },
    {
      "localPath": "../web",
      "description": "Web frontend",
      "sourceRef": "origin/main"
    }
  ]
}

Config rules to follow:

  • Multi-repo configs should mark exactly one repo with "primary": true — sessions launch in the primary repo's worktree by default, and its repo-local Claude/MCP configuration governs sessions. If no repo is marked, the task form asks the user to pick one.
  • localPath: "." refers to the selected repository itself (the one containing this config); other entries are sibling paths relative to it
  • Template variables are {{ TASKSLUG }} and {{ REPOBASENAME }} only
  • copyGlobs is additive with de-duplication (defaults → workspace.json → workspace.local.json → per-repo), never replaced
  • Repo entries may override sourceRef, setupCommand, copyGlobs, and primary — branchTemplate is always root-level
  • $patch: "delete" is supported only in workspace.local.json repos entries, not in workspace.json
  • disabled: true at root level disables all workspace setup options

Validate the generated config:

Bash(git remote -v)

For each repo localPath:

  • Check the directory exists: Bash(ls -la <localPath>)
  • Check it's a git repo: Bash(git -C <localPath> rev-parse --git-dir)
  • If sourceRef has a remote prefix, verify the remote exists: Bash(git -C <localPath> remote -v | grep <prefix>)

If setupCommand is set, state what it does in one sentence. Setup commands run after worktree creation.

</step> <step index=4>

Step 4: Write the approved config

After approval, write the proposed config.

Write workspace.json:

Write(.humanlayer/workspace.json, <content>)

If there are local overrides, write workspace.local.json and ensure it is gitignored:

Write(.humanlayer/workspace.local.json, <content>)

Check .gitignore for the workspace.local.json entry:

Read(.gitignore)

Add .humanlayer/workspace.local.json to .gitignore when needed:

Bash(echo '.humanlayer/workspace.local.json' >> .gitignore)
</step> <step index=5>

Step 5: Confirm and summarize

Give a short summary:

  • Files written
  • Number of repos configured
  • Path template that will be used
  • Setup command (if any)
  • Copy globs summary

Explain the next steps:

The workspace configuration is now ready.

You can:
1. Return to the Riptide task creation UI and select "Now" for workspace setup
2. Or use the workspace config modal (Settings icon on the Workspace axis) to review/edit the config

When you create a task with "Workspace: Now", Riptide will:
- Create a git worktree for each configured repo at the rendered path
- Copy the configured files into each worktree
- Run the setup command in each worktree
- Start the task in the primary repo's worktree

If the user is on a team, remind them to commit workspace.json (but not workspace.local.json):

Bash(git add .humanlayer/workspace.json)
Bash(git status)
</step>

Key concepts for this skill

Template variables

Only two template variables are supported in v1:

  • {{ TASKSLUG }} — the task slug (e.g. eng-123-small-fix)
  • {{ REPOBASENAME }} — the basename of each repo's resolved localPath (e.g. humanlayer, api, web)

Repo precedence rules

Effective config = defaults → workspace.json → workspace.local.json

For repos[]:

  • Local entry with matching localPath merges into that repo (local fields win)
  • Local entry with new localPath adds a new repo
  • Local entry with $patch: "delete" removes the repo from effective config

copyGlobs semantics

copyGlobs at every level uses additive merge with de-duplication, never replacement. The effective list is built by concatenating defaults → workspace.json → workspace.local.json (and, per repo, the root list → the repo's own copyGlobs), dropping duplicates while preserving order. Setting copyGlobs in a local override or repo entry extends the inherited list — it cannot remove entries from it.

Primary repo

In a multi-repo workspace, exactly one repo should carry "primary": true. The primary repo is the default launch directory for sessions in tasks created from this workspace: skills and instruction files load from all repos, but repo-local .claude/settings*.json / MCP configuration follows the launch directory, so the repo holding the team's central agent configuration should be primary. The task creation UI lets users override the primary per task, and prompts for a choice when a multi-repo config marks none. Single-repo configs are implicitly primary.

Coordination repos

A coordination repo is a directory that doesn't contain the main project code but instead contains task management files (.humanlayer/, tickets, plans) and references sibling repos through ../api, ../web, etc. localPath: "." simply refers to the selected repository itself; mark whichever repo should be the default launch/config repo with "primary": true.

disabled field

disabled: true at root level prevents workspace setup options that require worktree creation. The Riptide UI shows the source file that contributed disabled: true so users know which file to edit (or can re-enable in local overrides without touching shared config).

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

Automate website navigation, form entry, and clicks through a browser command line tool. Extract page text, capture screenshots, and compare page states to check interactions or test web app behavior across screen sizes.

中文简介正在准备中。当前显示英语简介。

  • Automate form entry and button clicks
  • Extract text from web pages
  • Save page screenshots and PDFs
humanlayer/humanlayer1.2万2026年10月23日 更新

Rewrite dense or ambiguous English into short, direct sentences using principles from ASD-STE100, a standard for clear technical English. It preserves facts and conditions, identifies writing issues, and shows the original and revised text side by side.

中文简介正在准备中。当前显示英语简介。

  • Clarifying English instructions for another agent
  • Simplifying English tool descriptions and error messages
  • Making English easier for non-native readers
humanlayer/humanlayer1.2万2026年10月23日 更新

Inspect GitHub pull requests, read review conversations, and investigate failed automated checks with dedicated scripts. Get consolidated status reports, unresolved discussion threads, and failing job or step logs, with full logs saved for further inspection.

中文简介正在准备中。当前显示英语简介。

  • Checking pull request status in one report
  • Reading unresolved review conversations
  • Investigating failed CI jobs and steps
humanlayer/humanlayer1.2万2026年10月23日 更新

Update release base versions for supported packages, keep matching version fields in sync, and verify generated versions. The workflow covers committing and pushing the changes, with guidance for release steps after merging.

中文简介正在准备中。当前显示英语简介。

  • Prepare a package version update for release
  • Synchronize version fields across related files
  • Verify generated versions before pushing
humanlayer/humanlayer1.2万2026年10月23日 更新

calldiff

免费

Compare function call structures across Git commits, branches, or working files to support code review. Display call trees and trace paths from an entry function to a target function, with support for 22 languages.

中文简介正在准备中。当前显示英语简介。

  • Compare function calls before and after a change
  • Review call structure changes between branches
  • Trace paths from an entry function to a target
humanlayer/humanlayer1.2万2026年10月23日 更新

Automate browser tasks from the terminal using the chrome-devtools-mcp CLI. Inspect page elements, click and fill forms, navigate tabs, capture screenshots, and investigate network requests, console messages, performance, and memory through shell commands.

中文简介正在准备中。当前显示英语简介。

  • Automating form input and page navigation
  • Capturing page or element screenshots
  • Investigating network requests and console errors
humanlayer/humanlayer1.2万2026年10月23日 更新

查看 humanlayer 的全部技能

报告此技能的问题