{
  "schemaVersion": "1.0",
  "item": {
    "slug": "linear",
    "name": "Linear",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/ManuelHettich/linear",
    "canonicalUrl": "https://clawhub.ai/ManuelHettich/linear",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/linear",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=linear",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "scripts/linear.sh"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/linear"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/linear",
    "agentPageUrl": "https://openagent3.xyz/skills/linear/agent",
    "manifestUrl": "https://openagent3.xyz/skills/linear/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/linear/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Linear",
        "body": "Manage issues, check project status, and stay on top of your team's work."
      },
      {
        "title": "Setup",
        "body": "export LINEAR_API_KEY=\"your-api-key\"\n# Optional: default team key used when a command needs a team\nexport LINEAR_DEFAULT_TEAM=\"TEAM\"\n\nDiscover team keys:\n\n{baseDir}/scripts/linear.sh teams\n\nIf LINEAR_DEFAULT_TEAM is set, you can omit the team key in team and call:\n\n{baseDir}/scripts/linear.sh create \"Title\" [\"Description\"]"
      },
      {
        "title": "Quick Commands",
        "body": "# My stuff\n{baseDir}/scripts/linear.sh my-issues          # Your assigned issues\n{baseDir}/scripts/linear.sh my-todos           # Just your Todo items\n{baseDir}/scripts/linear.sh urgent             # Urgent/High priority across team\n\n# Browse\n{baseDir}/scripts/linear.sh teams              # List available teams\n{baseDir}/scripts/linear.sh team <TEAM_KEY>    # All issues for a team\n{baseDir}/scripts/linear.sh project <name>     # Issues in a project\n{baseDir}/scripts/linear.sh issue <TEAM-123>   # Get issue details\n{baseDir}/scripts/linear.sh branch <TEAM-123>  # Get branch name for GitHub\n\n# Actions\n{baseDir}/scripts/linear.sh create <TEAM_KEY> \"Title\" [\"Description\"]\n{baseDir}/scripts/linear.sh comment <TEAM-123> \"Comment text\"\n{baseDir}/scripts/linear.sh status <TEAM-123> <todo|progress|review|done|blocked>\n{baseDir}/scripts/linear.sh assign <TEAM-123> <userName>\n{baseDir}/scripts/linear.sh priority <TEAM-123> <urgent|high|medium|low|none>\n\n# Overview\n{baseDir}/scripts/linear.sh standup            # Daily standup summary\n{baseDir}/scripts/linear.sh projects           # All projects with progress"
      },
      {
        "title": "Morning Standup",
        "body": "{baseDir}/scripts/linear.sh standup\n\nShows: your todos, blocked items across team, recently completed, what's in review."
      },
      {
        "title": "Quick Issue Creation (from chat)",
        "body": "{baseDir}/scripts/linear.sh create TEAM \"Fix auth timeout bug\" \"Users getting logged out after 5 min\""
      },
      {
        "title": "Triage Mode",
        "body": "{baseDir}/scripts/linear.sh urgent    # See what needs attention"
      },
      {
        "title": "Git Workflow (Linear ↔ GitHub Integration)",
        "body": "Always use Linear-derived branch names to enable automatic issue status tracking."
      },
      {
        "title": "Getting the Branch Name",
        "body": "{baseDir}/scripts/linear.sh branch TEAM-212\n# Returns: dev/team-212-fix-auth-timeout-bug"
      },
      {
        "title": "Creating a Worktree for an Issue",
        "body": "# 1. Get the branch name from Linear\nBRANCH=$({baseDir}/scripts/linear.sh branch TEAM-212)\n\n# 2. Pull fresh main first (main should ALWAYS match origin)\ncd /path/to/repo\ngit checkout main && git pull origin main\n\n# 3. Create worktree with that branch (branching from fresh origin/main)\ngit worktree add .worktrees/team-212 -b \"$BRANCH\" origin/main\ncd .worktrees/team-212\n\n# 4. Do your work, commit, push\ngit push -u origin \"$BRANCH\"\n\n⚠️ Never modify files on main. All changes happen in worktrees only."
      },
      {
        "title": "Why This Matters",
        "body": "Linear's GitHub integration tracks PRs by branch name pattern\nWhen you create a PR from a Linear branch, the issue automatically moves to \"In Review\"\nWhen the PR merges, the issue automatically moves to \"Done\"\nManual branch names break this automation\nKeeping main clean = no accidental pushes, easy worktree cleanup"
      },
      {
        "title": "Quick Reference",
        "body": "# Full workflow example\nISSUE=\"TEAM-212\"\nBRANCH=$({baseDir}/scripts/linear.sh branch $ISSUE)\n\n# Always start from fresh main\ncd ~/workspace/your-repo\ngit checkout main && git pull origin main\n\n# Create worktree (inside .worktrees/)\ngit worktree add .worktrees/${ISSUE,,} -b \"$BRANCH\" origin/main\ncd .worktrees/${ISSUE,,}\n\n# ... make changes ...\ngit add -A && git commit -m \"fix: implement $ISSUE\"\ngit push -u origin \"$BRANCH\"\ngh pr create --title \"$ISSUE: <title>\" --body \"Closes $ISSUE\""
      },
      {
        "title": "Priority Levels",
        "body": "LevelValueUse forurgent1Production issues, blockershigh2This week, importantmedium3This sprint/cyclelow4Nice to havenone0Backlog, someday"
      },
      {
        "title": "Teams (cached)",
        "body": "Team keys and IDs are discovered via the API and cached locally after the first lookup.\nUse linear.sh teams to refresh and list available teams."
      },
      {
        "title": "Notes",
        "body": "Uses GraphQL API (api.linear.app/graphql)\nRequires LINEAR_API_KEY env var\nIssue identifiers are like TEAM-123"
      },
      {
        "title": "Attribution",
        "body": "Inspired by schpet/linear-cli by Peter Schilling (ISC License).\nThis is an independent bash implementation for Clawdbot integration."
      }
    ],
    "body": "Linear\n\nManage issues, check project status, and stay on top of your team's work.\n\nSetup\nexport LINEAR_API_KEY=\"your-api-key\"\n# Optional: default team key used when a command needs a team\nexport LINEAR_DEFAULT_TEAM=\"TEAM\"\n\n\nDiscover team keys:\n\n{baseDir}/scripts/linear.sh teams\n\n\nIf LINEAR_DEFAULT_TEAM is set, you can omit the team key in team and call:\n\n{baseDir}/scripts/linear.sh create \"Title\" [\"Description\"]\n\nQuick Commands\n# My stuff\n{baseDir}/scripts/linear.sh my-issues          # Your assigned issues\n{baseDir}/scripts/linear.sh my-todos           # Just your Todo items\n{baseDir}/scripts/linear.sh urgent             # Urgent/High priority across team\n\n# Browse\n{baseDir}/scripts/linear.sh teams              # List available teams\n{baseDir}/scripts/linear.sh team <TEAM_KEY>    # All issues for a team\n{baseDir}/scripts/linear.sh project <name>     # Issues in a project\n{baseDir}/scripts/linear.sh issue <TEAM-123>   # Get issue details\n{baseDir}/scripts/linear.sh branch <TEAM-123>  # Get branch name for GitHub\n\n# Actions\n{baseDir}/scripts/linear.sh create <TEAM_KEY> \"Title\" [\"Description\"]\n{baseDir}/scripts/linear.sh comment <TEAM-123> \"Comment text\"\n{baseDir}/scripts/linear.sh status <TEAM-123> <todo|progress|review|done|blocked>\n{baseDir}/scripts/linear.sh assign <TEAM-123> <userName>\n{baseDir}/scripts/linear.sh priority <TEAM-123> <urgent|high|medium|low|none>\n\n# Overview\n{baseDir}/scripts/linear.sh standup            # Daily standup summary\n{baseDir}/scripts/linear.sh projects           # All projects with progress\n\nCommon Workflows\nMorning Standup\n{baseDir}/scripts/linear.sh standup\n\n\nShows: your todos, blocked items across team, recently completed, what's in review.\n\nQuick Issue Creation (from chat)\n{baseDir}/scripts/linear.sh create TEAM \"Fix auth timeout bug\" \"Users getting logged out after 5 min\"\n\nTriage Mode\n{baseDir}/scripts/linear.sh urgent    # See what needs attention\n\nGit Workflow (Linear ↔ GitHub Integration)\n\nAlways use Linear-derived branch names to enable automatic issue status tracking.\n\nGetting the Branch Name\n{baseDir}/scripts/linear.sh branch TEAM-212\n# Returns: dev/team-212-fix-auth-timeout-bug\n\nCreating a Worktree for an Issue\n# 1. Get the branch name from Linear\nBRANCH=$({baseDir}/scripts/linear.sh branch TEAM-212)\n\n# 2. Pull fresh main first (main should ALWAYS match origin)\ncd /path/to/repo\ngit checkout main && git pull origin main\n\n# 3. Create worktree with that branch (branching from fresh origin/main)\ngit worktree add .worktrees/team-212 -b \"$BRANCH\" origin/main\ncd .worktrees/team-212\n\n# 4. Do your work, commit, push\ngit push -u origin \"$BRANCH\"\n\n\n⚠️ Never modify files on main. All changes happen in worktrees only.\n\nWhy This Matters\nLinear's GitHub integration tracks PRs by branch name pattern\nWhen you create a PR from a Linear branch, the issue automatically moves to \"In Review\"\nWhen the PR merges, the issue automatically moves to \"Done\"\nManual branch names break this automation\nKeeping main clean = no accidental pushes, easy worktree cleanup\nQuick Reference\n# Full workflow example\nISSUE=\"TEAM-212\"\nBRANCH=$({baseDir}/scripts/linear.sh branch $ISSUE)\n\n# Always start from fresh main\ncd ~/workspace/your-repo\ngit checkout main && git pull origin main\n\n# Create worktree (inside .worktrees/)\ngit worktree add .worktrees/${ISSUE,,} -b \"$BRANCH\" origin/main\ncd .worktrees/${ISSUE,,}\n\n# ... make changes ...\ngit add -A && git commit -m \"fix: implement $ISSUE\"\ngit push -u origin \"$BRANCH\"\ngh pr create --title \"$ISSUE: <title>\" --body \"Closes $ISSUE\"\n\nPriority Levels\nLevel\tValue\tUse for\nurgent\t1\tProduction issues, blockers\nhigh\t2\tThis week, important\nmedium\t3\tThis sprint/cycle\nlow\t4\tNice to have\nnone\t0\tBacklog, someday\nTeams (cached)\n\nTeam keys and IDs are discovered via the API and cached locally after the first lookup. Use linear.sh teams to refresh and list available teams.\n\nNotes\nUses GraphQL API (api.linear.app/graphql)\nRequires LINEAR_API_KEY env var\nIssue identifiers are like TEAM-123\nAttribution\n\nInspired by schpet/linear-cli by Peter Schilling (ISC License). This is an independent bash implementation for Clawdbot integration."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/ManuelHettich/linear",
    "publisherUrl": "https://clawhub.ai/ManuelHettich/linear",
    "owner": "ManuelHettich",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/linear",
    "downloadUrl": "https://openagent3.xyz/downloads/linear",
    "agentUrl": "https://openagent3.xyz/skills/linear/agent",
    "manifestUrl": "https://openagent3.xyz/skills/linear/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/linear/agent.md"
  }
}