agentsclimarketplace

Task

Skill eliransu/digital-brain/skills/task

Claude + Obsidian knowledge companion. A persistent, compounding wiki vault based on Karpathy's LLM Wiki pattern — drop sources, ask questions, knowledge compounds.

Install
npx -y skills add eliransu/digital-brain --skill task

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Create a Linear issue via the Linear MCP and mirror it as a local note under `wiki/notes/` so `/sync` and `/sup` surface it. Default assignee is you; override with `@<Person>`. Default cycle is the team's CURRENT sprint; override with `sprint:next` or `sprint:none`. Default team is configured in `wiki/daily/_config.json` (`linear_default_team_key`). Triggers on: "/task", "/digital-brain:task", "add a Linear task", "file a ticket".

SKILL.md

8.7 KB, as published. Nobody here has run it

task: Create a Linear Issue + Mirror in the Vault

/task is the bridge between your local note system and Linear. Every /task invocation produces TWO artifacts:

  1. A Linear issue — the canonical work item, on the right team and (by default) the current cycle.
  2. A mirror note in wiki/notes/ with note_kind: task and the Linear ID embedded — so the next /sync / /sup picks it up alongside reminders.

The mirror means a /task you filed five minutes ago shows up in /sup without needing a /sync first.

User identity: [email protected]. Vault root: ~/digital-brain/.


Invocation Forms

FormAction
/task <title>new Linear issue, default team, current cycle, assigned to you
/task <title> @<Person>assign to that person (resolves via Linear list_users + people index)
/task <title> sprint:nextput on next cycle instead of current
/task <title> sprint:noneno cycle
/task <title> team:<TEAMKEY>override default team (e.g. team:ENG)
/task <title> priority:<urgent|high|med|low>set Linear priority
/task <title> due:<date>set due date on the issue

Multiple modifiers compose: /task ship retro @Alice sprint:current priority:high due:2026-05-20.

If $ARGUMENTS is empty, show the forms and ask which one.


Config

Reads wiki/daily/_config.json. Required keys (created on first run if missing):

{
  "linear_default_team_key": "TEAM",
  "linear_default_team_id": "<UUID — resolved on first run and cached>"
}

linear_default_team_key is your primary team (currently TEAM based on TEAM-906, TEAM-873, etc.). linear_default_team_id is the resolved UUID, looked up once via list_teams and cached so we don't hit the API every invocation.


Workflow

  1. Sweep expired notes first (same rule as /note: anything past its 7-day expires flips to status: expired and drops out of _index.md).

  2. Parse $ARGUMENTS. Extract:

    • title (everything not consumed by a modifier)
    • assignee_handle from @<Person> (optional, default = you)
    • cycle_mode from sprint:<...> (default current)
    • team_key from team:<...> (default from config)
    • priority from priority:<...> (default = no priority / 0)
    • due_date from due:<...> (optional)
  3. Resolve team.

    • Read linear_default_team_id from config.
    • If missing OR the user passed team:<KEY>, call mcp__claude_ai_Linear__list_teams, find the team whose key matches (TEAM, ENG, etc.), record its UUID. If user didn't override, write it back to _config.json for future runs.
  4. Resolve assignee.

    • If no @Person: call mcp__claude_ai_Linear__list_users filtered by email: [email protected]. Cache the user ID in config as linear_user_id if not already there.
    • If @<Name>: resolve <Name> via wiki/entities/people/_index.md to a full name. Then call list_users with a name/email filter to find the Linear user. If not found in Linear, fall back to assigning to you AND mention this in the confirmation.
  5. Resolve cycle.

    • If cycle_mode == "none", skip.
    • Call mcp__claude_ai_Linear__list_cycles filtered by team.id. Pick:
      • current (default): the cycle where startsAt <= now <= endsAt.
      • next: the cycle with the earliest startsAt > now.
      • <name>: a cycle whose name or number matches.
    • If no current cycle exists for the team, warn and proceed with no cycle.
  6. Map priority. Linear priorities: 0 (no priority), 1 (urgent), 2 (high), 3 (medium), 4 (low). Map the parsed keyword accordingly.

  7. Create the Linear issue. Call mcp__claude_ai_Linear__save_issue with:

    • team: the resolved team UUID
    • title: the parsed title
    • description: short body — Filed via /task on <YYYY-MM-DD HH:MM> by you. Mirror note: wiki/notes/<note_id>.md
    • assigneeId: resolved assignee UUID
    • cycleId: resolved cycle UUID (or omit)
    • priority: mapped int
    • dueDate: due_date if provided (Linear accepts YYYY-MM-DD)
    • Capture the response: identifier (e.g. TEAM-942), url, id.
  8. Mirror the issue as a vault note. Reuse the note skill's add flow:

    • note_kind: task
    • title: the issue title, prefixed with the Linear identifier — e.g. [TEAM-942] ship BigCustomer retro
    • created: now
    • due: the issue's dueDate if set, else cycle endsAt, else today 18:00
    • expires: created date + 7d (the 7-day vault TTL is independent of the Linear cycle)
    • status: open
    • assignee: resolved full name or me
    • linear: the issue identifier (e.g. TEAM-942)
    • Body includes a [Open in Linear](<url>) link.
    • File at wiki/notes/<YYYY-MM-DD>-<HHMM>-<slug>.md and register in wiki/notes/_index.md under Active Tasks.
  9. Hot cache. Same rule as /note: only touch wiki/hot.md if the mirror's due is within 24h.

  10. Log. Append at TOP of wiki/log.md:

    ## [YYYY-MM-DD HH:MM] task | <Linear ID>
    - Title: <title>
    - Assignee: <name>
    - Cycle: <cycle name or none>
    - Team: <team key>
    - Linear: <url>
    - Mirror: wiki/notes/<note_id>.md
    
  11. Confirm. Print:

    Filed [<Linear ID>](<url>) — assignee <name>, <cycle>, priority <p>.
    Mirror: [[notes/<note_id>]] (vault TTL 7d).
    

Defaults Summary

FieldDefault
Teamlinear_default_team_key from config (TEAM)
Assigneeyou ([email protected])
Cycle / SprintCurrent cycle for the team
PriorityNo priority (0)
Due dateNone on Linear; vault mirror gets today 18:00 if unspecified
Vault TTL7 days (independent of Linear cycle)

Examples

/task ship BigCustomer retro

  • Linear: new issue on TEAM, current cycle, assigned to you, no priority.
  • Vault: wiki/notes/2026-05-13-1430-ship-bigcustomer-retro.md with linear: TEAM-942.

/task review red-team PR @Alice priority:high due:2026-05-15

  • Linear: assigned to Alice Smith (resolved), current cycle, priority High, due 2026-05-15.
  • Vault: mirror with assignee: "Alice Smith", due: 2026-05-15 09:00.

/task plan Q3 offsite sprint:next priority:med

  • Linear: on TEAM next cycle.
  • Vault: mirror with due = next cycle endsAt.

/task ship retro sprint:none

  • Linear: no cycle.
  • Vault: mirror still gets due defaulting to today 18:00.

Failure Modes

  • Linear MCP not authenticated: stop, print the gh-style hint to authenticate. Do NOT silently write only the vault note — the source of truth must be Linear.
  • Team key not found: show the list of available team keys from list_teams and ask which one.
  • Assignee not found in Linear: assign to you and note assignee resolution failed: <name> — please reassign in Linear.
  • No current cycle exists: warn and file with no cycle.

Don'ts

  • Don't create the vault mirror if the Linear save_issue call failed. Linear is the source of truth.
  • Don't try to invent a cycle name — use what list_cycles returned.
  • Don't write to wiki/hot.md unless the mirror's due is within 24h.
  • Don't reuse a slug if a note with the same note_id already exists — append -2 etc.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.