Ranking|Claude Code Mods

ModsCode / Claude Code Mods / Ranking / task-list

task-list

Shows the session's tasks as a CLI-style checklist above the prompt

Code you can checkTerminal + desktopPaneBandBoxButtonText
reads files, draws

What it does

  • Draws a band above the prompt, a pane
  • Adds /task-demo, /task-tree
  • Watches TaskCreate, TaskUpdate, TodoWrite calls and can refuse them
  • Hooks session.start, turn.complete

Good points

  • No network calls
  • Starts no processes
  • Written in TypeScript
  • Writes no files

Code to start from

A starter ModsCode writes from the drawing it read, and the mod's own lines that draw, where there are any.

Starter (register.tsx)

register.tsx
import type { Register } from 'claude-code'

// Drawn like task-list by Konstantin Ivanov (pane, band), as ModsCode read it from the mod's code:
// https://modscode.com/claude-mods/mods/vmlinuz82-task-list/
// Written by ModsCode from that reading, not copied from the mod: use it as you like.
// Each value below stands for one the mod works out at run time; put in your own.
export const register: Register = on => {
  // the band above the prompt; what else goes there is drawn under it
  on('ui.render', { component: 'AbovePrompt' }, async ($, e, next) => {
    const { Box, Text, Button } = $.ui.resolve(e)
    const summary = '…'
    const MARK = '…'
    const n = '…'
    const title = '…'
    const step = '…'
    const MARK2 = '…'
    const subject = '…'
    const MARK3 = '…'
    const subject2 = '…'
    const MARK4 = '…'
    const subject3 = '…'
    const MARK5 = '…'
    const n2 = '…'
    const title2 = '…'
    const MARK6 = '…'
    const subject4 = '…'
    const MARK7 = '…'
    const subject5 = '…'
    const MARK8 = '…'
    const subject6 = '…'
    const MARK9 = '…'
    const n3 = '…'
    const title3 = '…'
    const MARK10 = '…'
    const subject7 = '…'
    const MARK11 = '…'
    const subject8 = '…'
    const MARK12 = '…'
    const subject9 = '…'
    const MARK13 = '…'
    const subject10 = '…'
    const MARK14 = '…'
    const subject11 = '…'
    const MARK15 = '…'
    const subject12 = '…'
    return (
      <Box flexDirection="column">
        <Box flexDirection="row" justifyContent="space-between" columnGap={2}>
          <Text wrap="truncate-end">
            {summary}
          </Text>
          <Box flexDirection="row" columnGap={2}>
            <Button label="Details" plain dimColor />
            <Box flexDirection="row" columnGap={1}>
              <Button label="□" plain dimColor />
              <Button label="✕" role="dismiss" plain dimColor />
            </Box>
          </Box>
        </Box>
        <Box flexDirection="column" paddingLeft={2}>
          <Box flexDirection="column">
            <Text wrap="truncate-end">
              {MARK}
              {" Task "}
              {n}
              {" "}
              {title}
              {` · ${step}`}
            </Text>
            <Box flexDirection="column" paddingLeft={2}>
              <Text>
                {MARK2}
                {" "}
                {subject}
              </Text>
              <Text>
                {MARK3}
                {" "}
                {subject2}
              </Text>
              <Text>
                {MARK4}
                {" "}
                {subject3}
              </Text>
            </Box>
          </Box>
          <Box flexDirection="column">
            <Text wrap="truncate-end">
              {MARK5}
              {" Task "}
              {n2}
              {" "}
              {title2}
              {` · ${step}`}
            </Text>
            <Box flexDirection="column" paddingLeft={2}>
              <Text>
                {MARK6}
                {" "}
                {subject4}
              </Text>
              <Text>
                {MARK7}
                {" "}
                {subject5}
              </Text>
              <Text>
                {MARK8}
                {" "}
                {subject6}
              </Text>
            </Box>
          </Box>
          <Box flexDirection="column">
            <Text wrap="truncate-end">
              {MARK9}
              {" Task "}
              {n3}
              {" "}
              {title3}
              {` · ${step}`}
            </Text>
            <Box flexDirection="column" paddingLeft={2}>
              <Text>
                {MARK10}
                {" "}
                {subject7}
              </Text>
              <Text>
                {MARK11}
                {" "}
                {subject8}
              </Text>
              <Text>
                {MARK12}
                {" "}
                {subject9}
              </Text>
            </Box>
          </Box>
          <Box flexDirection="column" paddingLeft={2}>
            <Text>
              {MARK13}
              {" "}
              {subject10}
            </Text>
            <Text>
              {MARK14}
              {" "}
              {subject11}
            </Text>
            <Text>
              {MARK15}
              {" "}
              {subject12}
            </Text>
          </Box>
        </Box>
        {await next(e)}
      </Box>
    )
  })

  // the pane: open it with $.ui.open({ id: 'my-pane', title: "Plan & tasks" })
  on('ui.render', { component: 'Pane', requestId: 'my-pane' }, async ($, e) => {
    const { Box, Text } = $.ui.resolve(e)
    const plansDone = '…'
    const length = '…'
    const MARK = '…'
    const planSummary = '…'
    const MARK2 = '…'
    const n = '…'
    const title = '…'
    const step = '…'
    const MARK3 = '…'
    const subject = '…'
    const MARK4 = '…'
    const subject2 = '…'
    const MARK5 = '…'
    const subject3 = '…'
    const MARK6 = '…'
    const n2 = '…'
    const title2 = '…'
    const MARK7 = '…'
    const subject4 = '…'
    const MARK8 = '…'
    const subject5 = '…'
    const MARK9 = '…'
    const subject6 = '…'
    const MARK10 = '…'
    const n3 = '…'
    const title3 = '…'
    const MARK11 = '…'
    const subject7 = '…'
    const MARK12 = '…'
    const subject8 = '…'
    const MARK13 = '…'
    const subject9 = '…'
    const MARK14 = '…'
    const subject10 = '…'
    const MARK15 = '…'
    const subject11 = '…'
    const MARK16 = '…'
    const subject12 = '…'
    const MARK17 = '…'
    const planSummary2 = '…'
    const MARK18 = '…'
    const n4 = '…'
    const title4 = '…'
    const MARK19 = '…'
    const subject13 = '…'
    const MARK20 = '…'
    const subject14 = '…'
    const MARK21 = '…'
    const subject15 = '…'
    const MARK22 = '…'
    const n5 = '…'
    const title5 = '…'
    const MARK23 = '…'
    const subject16 = '…'
    const MARK24 = '…'
    const subject17 = '…'
    const MARK25 = '…'
    const subject18 = '…'
    const MARK26 = '…'
    const n6 = '…'
    const title6 = '…'
    const MARK27 = '…'
    const subject19 = '…'
    const MARK28 = '…'
    const subject20 = '…'
    const MARK29 = '…'
    const subject21 = '…'
    const MARK30 = '…'
    const subject22 = '…'
    const MARK31 = '…'
    const subject23 = '…'
    const MARK32 = '…'
    const subject24 = '…'
    const MARK33 = '…'
    const planSummary3 = '…'
    const MARK34 = '…'
    const n7 = '…'
    const title7 = '…'
    const MARK35 = '…'
    const subject25 = '…'
    const MARK36 = '…'
    const subject26 = '…'
    const MARK37 = '…'
    const subject27 = '…'
    const MARK38 = '…'
    const n8 = '…'
    const title8 = '…'
    const MARK39 = '…'
    const subject28 = '…'
    const MARK40 = '…'
    const subject29 = '…'
    const MARK41 = '…'
    const subject30 = '…'
    const MARK42 = '…'
    const n9 = '…'
    const title9 = '…'
    const MARK43 = '…'
    const subject31 = '…'
    const MARK44 = '…'
    const subject32 = '…'
    const MARK45 = '…'
    const subject33 = '…'
    const MARK46 = '…'
    const subject34 = '…'
    const MARK47 = '…'
    const subject35 = '…'
    const MARK48 = '…'
    const subject36 = '…'
    const plansDone2 = '…'
    const length2 = '…'
    const MARK49 = '…'
    const planSummary4 = '…'
    const MARK50 = '…'
    const n10 = '…'
    const title10 = '…'
    const MARK51 = '…'
    const subject37 = '…'
    const MARK52 = '…'
    const subject38 = '…'
    const MARK53 = '…'
    const subject39 = '…'
    const MARK54 = '…'
    const n11 = '…'
    const title11 = '…'
    const MARK55 = '…'
    const subject40 = '…'
    const MARK56 = '…'
    const subject41 = '…'
    const MARK57 = '…'
    const subject42 = '…'
    const MARK58 = '…'
    const n12 = '…'
    const title12 = '…'
    const MARK59 = '…'
    const subject43 = '…'
    const MARK60 = '…'
    const subject44 = '…'
    const MARK61 = '…'
    const subject45 = '…'
    const MARK62 = '…'
    const subject46 = '…'
    const MARK63 = '…'
    const subject47 = '…'
    const MARK64 = '…'
    const subject48 = '…'
    const MARK65 = '…'
    const planSummary5 = '…'
    const MARK66 = '…'
    const n13 = '…'
    const title13 = '…'
    const MARK67 = '…'
    const subject49 = '…'
    const MARK68 = '…'
    const subject50 = '…'
    const MARK69 = '…'
    const subject51 = '…'
    const MARK70 = '…'
    const n14 = '…'
    const title14 = '…'
    const MARK71 = '…'
    const subject52 = '…'
    const MARK72 = '…'
    const subject53 = '…'
    const MARK73 = '…'
    const subject54 = '…'
    const MARK74 = '…'
    const n15 = '…'
    const title15 = '…'
    const MARK75 = '…'
    const subject55 = '…'
    const MARK76 = '…'
    const subject56 = '…'
    const MARK77 = '…'
    const subject57 = '…'
    const MARK78 = '…'
    const subject58 = '…'
    const MARK79 = '…'
    const subject59 = '…'
    const MARK80 = '…'
    const subject60 = '…'
    const MARK81 = '…'
    const planSummary6 = '…'
    const MARK82 = '…'
    const n16 = '…'
    const title16 = '…'
    const MARK83 = '…'
    const subject61 = '…'
    const MARK84 = '…'
    const subject62 = '…'
    const MARK85 = '…'
    const subject63 = '…'
    const MARK86 = '…'
    const n17 = '…'
    const title17 = '…'
    const MARK87 = '…'
    const subject64 = '…'
    const MARK88 = '…'
    const subject65 = '…'
    const MARK89 = '…'
    const subject66 = '…'
    const MARK90 = '…'
    const n18 = '…'
    const title18 = '…'
    const MARK91 = '…'
    const subject67 = '…'
    const MARK92 = '…'
    const subject68 = '…'
    const MARK93 = '…'
    const subject69 = '…'
    const MARK94 = '…'
    const subject70 = '…'
    const MARK95 = '…'
    const subject71 = '…'
    const MARK96 = '…'
    const subject72 = '…'
    const plansDone3 = '…'
    const length3 = '…'
    const MARK97 = '…'
    const planSummary7 = '…'
    const MARK98 = '…'
    const n19 = '…'
    const title19 = '…'
    const MARK99 = '…'
    const subject73 = '…'
    const MARK100 = '…'
    const subject74 = '…'
    const MARK101 = '…'
    const subject75 = '…'
    const MARK102 = '…'
    const n20 = '…'
    const title20 = '…'
    const MARK103 = '…'
    const subject76 = '…'
    const MARK104 = '…'
    const subject77 = '…'
    const MARK105 = '…'
    const subject78 = '…'
    const MARK106 = '…'
    const n21 = '…'
    const title21 = '…'
    const MARK107 = '…'
    const subject79 = '…'
    const MARK108 = '…'
    const subject80 = '…'
    const MARK109 = '…'
    const subject81 = '…'
    const MARK110 = '…'
    const subject82 = '…'
    const MARK111 = '…'
    const subject83 = '…'
    const MARK112 = '…'
    const subject84 = '…'
    const MARK113 = '…'
    const planSummary8 = '…'
    const MARK114 = '…'
    const n22 = '…'
    const title22 = '…'
    const MARK115 = '…'
    const subject85 = '…'
    const MARK116 = '…'
    const subject86 = '…'
    const MARK117 = '…'
    const subject87 = '…'
    const MARK118 = '…'
    const n23 = '…'
    const title23 = '…'
    const MARK119 = '…'
    const subject88 = '…'
    const MARK120 = '…'
    const subject89 = '…'
    const MARK121 = '…'
    const subject90 = '…'
    const MARK122 = '…'
    const n24 = '…'
    const title24 = '…'
    const MARK123 = '…'
    const subject91 = '…'
    const MARK124 = '…'
    const subject92 = '…'
    const MARK125 = '…'
    const subject93 = '…'
    const MARK126 = '…'
    const subject94 = '…'
    const MARK127 = '…'
    const subject95 = '…'
    const MARK128 = '…'
    const subject96 = '…'
    const MARK129 = '…'
    const planSummary9 = '…'
    const MARK130 = '…'
    const n25 = '…'
    const title25 = '…'
    const MARK131 = '…'
    const subject97 = '…'
    const MARK132 = '…'
    const subject98 = '…'
    const MARK133 = '…'
    const subject99 = '…'
    const MARK134 = '…'
    const n26 = '…'
    const title26 = '…'
    const MARK135 = '…'
    const subject100 = '…'
    const MARK136 = '…'
    const subject101 = '…'
    const MARK137 = '…'
    const subject102 = '…'
    const MARK138 = '…'
    const n27 = '…'
    const title27 = '…'
    const MARK139 = '…'
    const subject103 = '…'
    const MARK140 = '…'
    const subject104 = '…'
    const MARK141 = '…'
    const subject105 = '…'
    const MARK142 = '…'
    const subject106 = '…'
    const MARK143 = '…'
    const subject107 = '…'
    const MARK144 = '…'
    const subject108 = '…'
    return (
      <Box flexDirection="column">
        <Box flexDirection="column" marginBottom={1}>
          <Text bold>
            Plans
            {" · "}
            {plansDone}
            /
            {length}
            {" plans done"}
          </Text>
          <Box flexDirection="column" paddingLeft={2}>
            <Text wrap="truncate-end">
              {MARK}
              {" "}
              {planSummary}
            </Text>
            <Box flexDirection="column" paddingLeft={2}>
              <Box flexDirection="column">
                <Text wrap="truncate-end">
                  {MARK2}
                  {" Task "}
                  {n}
                  {" "}
                  {title}
                  {` · ${step}`}
                </Text>
                <Box flexDirection="column" paddingLeft={2}>
                  <Text>
                    {MARK3}
                    {" "}
                    {subject}
                  </Text>
                  <Text>
                    {MARK4}
                    {" "}
                    {subject2}
                  </Text>
                  <Text>
                    {MARK5}
                    {" "}
                    {subject3}
                  </Text>
                </Box>
              </Box>
              <Box flexDirection="column">
                <Text wrap="truncate-end">
                  {MARK6}
                  {" Task "}
                  {n2}
                  {" "}
                  {title2}
                  {` · ${step}`}
                </Text>
                <Box flexDirection="column" paddingLeft={2}>
                  <Text>
                    {MARK7}
                    {" "}
                    {subject4}
                  </Text>
                  <Text>
                    {MARK8}
                    {" "}
                    {subject5}
                  </Text>
                  <Text>
                    {MARK9}
                    {" "}
                    {subject6}
                  </Text>
                </Box>
              </Box>
              <Box flexDirection="column">
                <Text wrap="truncate-end">
                  {MARK10}
                  {" Task "}
                  {n3}
                  {" "}
                  {title3}
                  {` · ${step}`}
                </Text>
                <Box flexDirection="column" paddingLeft={2}>
                  <Text>
                    {MARK11}
                    {" "}
                    {subject7}
                  </Text>
                  <Text>
                    {MARK12}
                    {" "}
                    {subject8}
                  </Text>
                  <Text>
                    {MARK13}
                    {" "}
                    {subject9}
                  </Text>
                </Box>
              </Box>
              <Box flexDirection="column" paddingLeft={2}>
                <Text>
                  {MARK14}
                  {" "}
                  {subject10}
                </Text>
                <Text>
                  {MARK15}
                  {" "}
                  {subject11}
                </Text>
                <Text>
                  {MARK16}
                  {" "}
                  {subject12}
                </Text>
              </Box>
            </Box>
          </Box>
          <Box flexDirection="column" paddingLeft={2}>
            <Text wrap="truncate-end">
              {MARK17}
              {" "}
              {planSummary2}
            </Text>
            <Box flexDirection="column" paddingLeft={2}>
              <Box flexDirection="column">
                <Text wrap="truncate-end">
                  {MARK18}
                  {" Task "}
                  {n4}
                  {" "}
                  {title4}
                  {` · ${step}`}
                </Text>
                <Box flexDirection="column" paddingLeft={2}>
                  <Text>
                    {MARK19}
                    {" "}
                    {subject13}
                  </Text>
                  <Text>
                    {MARK20}
                    {" "}
                    {subject14}
                  </Text>
                  <Text>
                    {MARK21}
                    {" "}
                    {subject15}
                  </Text>
                </Box>
              </Box>
              <Box flexDirection="column">
                <Text wrap="truncate-end">
                  {MARK22}
                  {" Task "}
                  {n5}
                  {" "}
                  {title5}
                  {` · ${step}`}
                </Text>
                <Box flexDirection="column" paddingLeft={2}>
                  <Text>
                    {MARK23}
                    {" "}
                    {subject16}
                  </Text>
                  <Text>
                    {MARK24}
                    {" "}
                    {subject17}
                  </Text>
                  <Text>
                    {MARK25}
                    {" "}
                    {subject18}
                  </Text>
                </Box>
              </Box>
              <Box flexDirection="column">
                <Text wrap="truncate-end">
                  {MARK26}
                  {" Task "}
                  {n6}
                  {" "}
                  {title6}
                  {` · ${step}`}
                </Text>
                <Box flexDirection="column" paddingLeft={2}>
                  <Text>
                    {MARK27}
                    {" "}
                    {subject19}
                  </Text>
                  <Text>
                    {MARK28}
                    {" "}
                    {subject20}
                  </Text>
                  <Text>
                    {MARK29}
                    {" "}
                    {subject21}
                  </Text>
                </Box>
              </Box>
              <Box flexDirection="column" paddingLeft={2}>
                <Text>
                  {MARK30}
                  {" "}
                  {subject22}
                </Text>
                <Text>
                  {MARK31}
                  {" "}
                  {subject23}
                </Text>
                <Text>
                  {MARK32}
                  {" "}
                  {subject24}
                </Text>
              </Box>
            </Box>
          </Box>
          <Box flexDirection="column" paddingLeft={2}>
            <Text wrap="truncate-end">
              {MARK33}
              {" "}
              {planSummary3}
            </Text>
            <Box flexDirection="column" paddingLeft={2}>
              <Box flexDirection="column">
                <Text wrap="truncate-end">
                  {MARK34}
                  {" Task "}
                  {n7}
                  {" "}
                  {title7}
                  {` · ${step}`}
                </Text>
                <Box flexDirection="column" paddingLeft={2}>
                  <Text>
                    {MARK35}
                    {" "}
                    {subject25}
                  </Text>
                  <Text>
                    {MARK36}
                    {" "}
                    {subject26}
                  </Text>
                  <Text>
                    {MARK37}
                    {" "}
                    {subject27}
                  </Text>
                </Box>
              </Box>
              <Box flexDirection="column">
                <Text wrap="truncate-end">
                  {MARK38}
                  {" Task "}
                  {n8}
                  {" "}
                  {title8}
                  {` · ${step}`}
                </Text>
                <Box flexDirection="column" paddingLeft={2}>
                  <Text>
                    {MARK39}
                    {" "}
                    {subject28}
                  </Text>
                  <Text>
                    {MARK40}
                    {" "}
                    {subject29}
                  </Text>
                  <Text>
                    {MARK41}
                    {" "}
                    {subject30}
                  </Text>
                </Box>
              </Box>
              <Box flexDirection="column">
                <Text wrap="truncate-end">
                  {MARK42}
                  {" Task "}
                  {n9}
                  {" "}
                  {title9}
                  {` · ${step}`}
                </Text>
                <Box flexDirection="column" paddingLeft={2}>
                  <Text>
                    {MARK43}
                    {" "}
                    {subject31}
                  </Text>
                  <Text>
                    {MARK44}
                    {" "}
                    {subject32}
                  </Text>
                  <Text>
                    {MARK45}
                    {" "}
                    {subject33}
                  </Text>
                </Box>
              </Box>
              <Box flexDirection="column" paddingLeft={2}>
                <Text>
                  {MARK46}
                  {" "}
                  {subject34}
                </Text>
                <Text>
                  {MARK47}
                  {" "}
                  {subject35}
                </Text>
                <Text>
                  {MARK48}
                  {" "}
                  {subject36}
                </Text>
              </Box>
            </Box>
          </Box>
        </Box>
        <Box flexDirection="column" marginBottom={1}>
          <Text bold>
            Plans
            {" · "}
            {plansDone2}
            /
            {length2}
            {" plans done"}
          </Text>
          <Box flexDirection="column" paddingLeft={2}>
            <Text wrap="truncate-end">
              {MARK49}
              {" "}
              {planSummary4}
            </Text>
            <Box flexDirection="column" paddingLeft={2}>
              <Box flexDirection="column">
                <Text wrap="truncate-end">
                  {MARK50}
                  {" Task "}
                  {n10}
                  {" "}
                  {title10}
                  {` · ${step}`}
                </Text>
                <Box flexDirection="column" paddingLeft={2}>
                  <Text>
                    {MARK51}
                    {" "}
                    {subject37}
                  </Text>
                  <Text>
                    {MARK52}
                    {" "}
                    {subject38}
                  </Text>
                  <Text>
                    {MARK53}
                    {" "}
                    {subject39}
                  </Text>
                </Box>
              </Box>
              <Box flexDirection="column">
                <Text wrap="truncate-end">
                  {MARK54}
                  {" Task "}
                  {n11}
                  {" "}
                  {title11}
                  {` · ${step}`}
                </Text>
                <Box flexDirection="column" paddingLeft={2}>
                  <Text>
                    {MARK55}
                    {" "}
                    {subject40}
                  </Text>
                  <Text>
                    {MARK56}
                    {" "}
                    {subject41}
                  </Text>
                  <Text>
                    {MARK57}
                    {" "}
                    {subject42}
                  </Text>
                </Box>
              </Box>
              <Box flexDirection="column">
                <Text wrap="truncate-end">
                  {MARK58}
                  {" Task "}
                  {n12}
                  {" "}
                  {title12}
                  {` · ${step}`}
                </Text>
                <Box flexDirection="column" paddingLeft={2}>
                  <Text>
                    {MARK59}
                    {" "}
                    {subject43}
                  </Text>
                  <Text>
                    {MARK60}
                    {" "}
                    {subject44}
                  </Text>
                  <Text>
                    {MARK61}
                    {" "}
                    {subject45}
                  </Text>
                </Box>
              </Box>
              <Box flexDirection="column" paddingLeft={2}>
                <Text>
                  {MARK62}
                  {" "}
                  {subject46}
                </Text>
                <Text>
                  {MARK63}
                  {" "}
                  {subject47}
                </Text>
                <Text>
                  {MARK64}
                  {" "}
                  {subject48}
                </Text>
              </Box>
            </Box>
          </Box>
          <Box flexDirection="column" paddingLeft={2}>
            <Text wrap="truncate-end">
              {MARK65}
              {" "}
              {planSummary5}
            </Text>
            <Box flexDirection="column" paddingLeft={2}>
              <Box flexDirection="column">
                <Text wrap="truncate-end">
                  {MARK66}
                  {" Task "}
                  {n13}
                  {" "}
                  {title13}
                  {` · ${step}`}
                </Text>
                <Box flexDirection="column" paddingLeft={2}>
                  <Text>
                    {MARK67}
                    {" "}
                    {subject49}
                  </Text>
                  <Text>
                    {MARK68}
                    {" "}
                    {subject50}
                  </Text>
                  <Text>
                    {MARK69}
                    {" "}
                    {subject51}
                  </Text>
                </Box>
              </Box>
              <Box flexDirection="column">
                <Text wrap="truncate-end">
                  {MARK70}
                  {" Task "}
                  {n14}
                  {" "}
                  {title14}
                  {` · ${step}`}
                </Text>
                <Box flexDirection="column" paddingLeft={2}>
                  <Text>
                    {MARK71}
                    {" "}
                    {subject52}
                  </Text>
                  <Text>
                    {MARK72}
                    {" "}
                    {subject53}
                  </Text>
                  <Text>
                    {MARK73}
                    {" "}
                    {subject54}
                  </Text>
                </Box>
              </Box>
              <Box flexDirection="column">
                <Text wrap="truncate-end">
                  {MARK74}
                  {" Task "}
                  {n15}
                  {" "}
                  {title15}
                  {` · ${step}`}
                </Text>
                <Box flexDirection="column" paddingLeft={2}>
                  <Text>
                    {MARK75}
                    {" "}
                    {subject55}
                  </Text>
                  <Text>
                    {MARK76}
                    {" "}
                    {subject56}
                  </Text>
                  <Text>
                    {MARK77}
                    {" "}
                    {subject57}
                  </Text>
                </Box>
              </Box>
              <Box flexDirection="column" paddingLeft={2}>
                <Text>
                  {MARK78}
                  {" "}
                  {subject58}
                </Text>
                <Text>
                  {MARK79}
                  {" "}
                  {subject59}
                </Text>
                <Text>
                  {MARK80}
                  {" "}
                  {subject60}
                </Text>
              </Box>
            </Box>
          </Box>
          <Box flexDirection="column" paddingLeft={2}>
            <Text wrap="truncate-end">
              {MARK81}
              {" "}
              {planSummary6}
            </Text>
            <Box flexDirection="column" paddingLeft={2}>
              <Box flexDirection="column">
                <Text wrap="truncate-end">
                  {MARK82}
                  {" Task "}
                  {n16}
                  {" "}
                  {title16}
                  {` · ${step}`}
                </Text>
                <Box flexDirection="column" paddingLeft={2}>
                  <Text>
                    {MARK83}
                    {" "}
                    {subject61}
                  </Text>
                  <Text>
                    {MARK84}
                    {" "}
                    {subject62}
                  </Text>
                  <Text>
                    {MARK85}
                    {" "}
                    {subject63}
                  </Text>
                </Box>
              </Box>
              <Box flexDirection="column">
                <Text wrap="truncate-end">
                  {MARK86}
                  {" Task "}
                  {n17}
                  {" "}
                  {title17}
                  {` · ${step}`}
                </Text>
                <Box flexDirection="column" paddingLeft={2}>
                  <Text>
                    {MARK87}
                    {" "}
                    {subject64}
                  </Text>
                  <Text>
                    {MARK88}
                    {" "}
                    {subject65}
                  </Text>
                  <Text>
                    {MARK89}
                    {" "}
                    {subject66}
                  </Text>
                </Box>
              </Box>
              <Box flexDirection="column">
                <Text wrap="truncate-end">
                  {MARK90}
                  {" Task "}
                  {n18}
                  {" "}
                  {title18}
                  {` · ${step}`}
                </Text>
                <Box flexDirection="column" paddingLeft={2}>
                  <Text>
                    {MARK91}
                    {" "}
                    {subject67}
                  </Text>
                  <Text>
                    {MARK92}
                    {" "}
                    {subject68}
                  </Text>
                  <Text>
                    {MARK93}
                    {" "}
                    {subject69}
                  </Text>
                </Box>
              </Box>
              <Box flexDirection="column" paddingLeft={2}>
                <Text>
                  {MARK94}
                  {" "}
                  {subject70}
                </Text>
                <Text>
                  {MARK95}
                  {" "}
                  {subject71}
                </Text>
                <Text>
                  {MARK96}
                  {" "}
                  {subject72}
                </Text>
              </Box>
            </Box>
          </Box>
        </Box>
        <Box flexDirection="column" marginBottom={1}>
          <Text bold>
            Plans
            {" · "}
            {plansDone3}
            /
            {length3}
            {" plans done"}
          </Text>
          <Box flexDirection="column" paddingLeft={2}>
            <Text wrap="truncate-end">
              {MARK97}
              {" "}
              {planSummary7}
            </Text>
            <Box flexDirection="column" paddingLeft={2}>
              <Box flexDirection="column">
                <Text wrap="truncate-end">
                  {MARK98}
                  {" Task "}
                  {n19}
                  {" "}
                  {title19}
                  {` · ${step}`}
                </Text>
                <Box flexDirection="column" paddingLeft={2}>
                  <Text>
                    {MARK99}
                    {" "}
                    {subject73}
                  </Text>
                  <Text>
                    {MARK100}
                    {" "}
                    {subject74}
                  </Text>
                  <Text>
                    {MARK101}
                    {" "}
                    {subject75}
                  </Text>
                </Box>
              </Box>
              <Box flexDirection="column">
                <Text wrap="truncate-end">
                  {MARK102}
                  {" Task "}
                  {n20}
                  {" "}
                  {title20}
                  {` · ${step}`}
                </Text>
                <Box flexDirection="column" paddingLeft={2}>
                  <Text>
                    {MARK103}
                    {" "}
                    {subject76}
                  </Text>
                  <Text>
                    {MARK104}
                    {" "}
                    {subject77}
                  </Text>
                  <Text>
                    {MARK105}
                    {" "}
                    {subject78}
                  </Text>
                </Box>
              </Box>
              <Box flexDirection="column">
                <Text wrap="truncate-end">
                  {MARK106}
                  {" Task "}
                  {n21}
                  {" "}
                  {title21}
                  {` · ${step}`}
                </Text>
                <Box flexDirection="column" paddingLeft={2}>
                  <Text>
                    {MARK107}
                    {" "}
                    {subject79}
                  </Text>
                  <Text>
                    {MARK108}
                    {" "}
                    {subject80}
                  </Text>
                  <Text>
                    {MARK109}
                    {" "}
                    {subject81}
                  </Text>
                </Box>
              </Box>
              <Box flexDirection="column" paddingLeft={2}>
                <Text>
                  {MARK110}
                  {" "}
                  {subject82}
                </Text>
                <Text>
                  {MARK111}
                  {" "}
                  {subject83}
                </Text>
                <Text>
                  {MARK112}
                  {" "}
                  {subject84}
                </Text>
              </Box>
            </Box>
          </Box>
          <Box flexDirection="column" paddingLeft={2}>
            <Text wrap="truncate-end">
              {MARK113}
              {" "}
              {planSummary8}
            </Text>
            <Box flexDirection="column" paddingLeft={2}>
              <Box flexDirection="column">
                <Text wrap="truncate-end">
                  {MARK114}
                  {" Task "}
                  {n22}
                  {" "}
                  {title22}
                  {` · ${step}`}
                </Text>
                <Box flexDirection="column" paddingLeft={2}>
                  <Text>
                    {MARK115}
                    {" "}
                    {subject85}
                  </Text>
                  <Text>
                    {MARK116}
                    {" "}
                    {subject86}
                  </Text>
                  <Text>
                    {MARK117}
                    {" "}
                    {subject87}
                  </Text>
                </Box>
              </Box>
              <Box flexDirection="column">
                <Text wrap="truncate-end">
                  {MARK118}
                  {" Task "}
                  {n23}
                  {" "}
                  {title23}
                  {` · ${step}`}
                </Text>
                <Box flexDirection="column" paddingLeft={2}>
                  <Text>
                    {MARK119}
                    {" "}
                    {subject88}
                  </Text>
                  <Text>
                    {MARK120}
                    {" "}
                    {subject89}
                  </Text>
                  <Text>
                    {MARK121}
                    {" "}
                    {subject90}
                  </Text>
                </Box>
              </Box>
              <Box flexDirection="column">
                <Text wrap="truncate-end">
                  {MARK122}
                  {" Task "}
                  {n24}
                  {" "}
                  {title24}
                  {` · ${step}`}
                </Text>
                <Box flexDirection="column" paddingLeft={2}>
                  <Text>
                    {MARK123}
                    {" "}
                    {subject91}
                  </Text>
                  <Text>
                    {MARK124}
                    {" "}
                    {subject92}
                  </Text>
                  <Text>
                    {MARK125}
                    {" "}
                    {subject93}
                  </Text>
                </Box>
              </Box>
              <Box flexDirection="column" paddingLeft={2}>
                <Text>
                  {MARK126}
                  {" "}
                  {subject94}
                </Text>
                <Text>
                  {MARK127}
                  {" "}
                  {subject95}
                </Text>
                <Text>
                  {MARK128}
                  {" "}
                  {subject96}
                </Text>
              </Box>
            </Box>
          </Box>
          <Box flexDirection="column" paddingLeft={2}>
            <Text wrap="truncate-end">
              {MARK129}
              {" "}
              {planSummary9}
            </Text>
            <Box flexDirection="column" paddingLeft={2}>
              <Box flexDirection="column">
                <Text wrap="truncate-end">
                  {MARK130}
                  {" Task "}
                  {n25}
                  {" "}
                  {title25}
                  {` · ${step}`}
                </Text>
                <Box flexDirection="column" paddingLeft={2}>
                  <Text>
                    {MARK131}
                    {" "}
                    {subject97}
                  </Text>
                  <Text>
                    {MARK132}
                    {" "}
                    {subject98}
                  </Text>
                  <Text>
                    {MARK133}
                    {" "}
                    {subject99}
                  </Text>
                </Box>
              </Box>
              <Box flexDirection="column">
                <Text wrap="truncate-end">
                  {MARK134}
                  {" Task "}
                  {n26}
                  {" "}
                  {title26}
                  {` · ${step}`}
                </Text>
                <Box flexDirection="column" paddingLeft={2}>
                  <Text>
                    {MARK135}
                    {" "}
                    {subject100}
                  </Text>
                  <Text>
                    {MARK136}
                    {" "}
                    {subject101}
                  </Text>
                  <Text>
                    {MARK137}
                    {" "}
                    {subject102}
                  </Text>
                </Box>
              </Box>
              <Box flexDirection="column">
                <Text wrap="truncate-end">
                  {MARK138}
                  {" Task "}
                  {n27}
                  {" "}
                  {title27}
                  {` · ${step}`}
                </Text>
                <Box flexDirection="column" paddingLeft={2}>
                  <Text>
                    {MARK139}
                    {" "}
                    {subject103}
                  </Text>
                  <Text>
                    {MARK140}
                    {" "}
                    {subject104}
                  </Text>
                  <Text>
                    {MARK141}
                    {" "}
                    {subject105}
                  </Text>
                </Box>
              </Box>
              <Box flexDirection="column" paddingLeft={2}>
                <Text>
                  {MARK142}
                  {" "}
                  {subject106}
                </Text>
                <Text>
                  {MARK143}
                  {" "}
                  {subject107}
                </Text>
                <Text>
                  {MARK144}
                  {" "}
                  {subject108}
                </Text>
              </Box>
            </Box>
          </Box>
        </Box>
      </Box>
    )
  })
}

The mod's own code

Its licence text was not found at the commit read, so only the places in the source are linked.

How to build this: Pane (panel), Deny a tool call

What its code calls

reads filestool calls

What its code shows

Read from the source at commit b23f514242d7. The first group decides whether a mod is listed; the rest is for you to weigh. A later commit is not read until the next crawl.

Decides the listing: code you can check
Entry readEvery module hooks/hooks.json names was read.plugins/task-list/hooks/register.tsx
ParsesEvery file parses as TypeScript or JavaScript.3 files parsed
All its code is in the modEvery import is a file of the mod or the engine's own module; no packages, no require.all its code is in the mod
ReadableNo minified lines, no eval or new Function, no import of a computed path, no encoded blobs.no minified code, no eval, no encoded blobs
Calls in the openNetwork and programs are reached as $.http.fetch and $.process.run in place, never passed around.every call outside goes through $ in the open
For you to weigh before installing
Where it drawsThe terminal, the desktop app, both, or nothing (hooks only: a guard or a prompt rewriter), as its code says. Shown, never a reason to leave a mod out.draws in the terminal and the desktop app, the same in both
Install lineWhether its repository's own .claude-plugin/marketplace.json lists it, so it installs from that marketplace with the lines on its page.listed in its repository's .claude-plugin/marketplace.json: installs from there
Programs on WindowsWhether every program it starts through $.process exists on Windows (tail, date, open, osascript, /usr/… do not).runs no program a Windows PC lacks
NetworkWhether every fetch names its https host in the code.no network
ProgramsWhether every program it starts is named in the code and is not a shell, an interpreter or a network tool.starts no programs
Reads and sendsWhether it both reads something of yours (files, environment variables, the transcript, settings) and reaches outside (the network, an MCP server, another session, telemetry).reads files, but reaches nothing outside
Keys in the sourceWhether the source holds what looks like an API key or a private key.no keys in the source
LicenceAn open licence (MIT, Apache-2.0, BSD, ISC, Unlicense, 0BSD, CC0) with its text lets ModsCode show its code; otherwise the code is linked.no licence
Settings hooksHooks declared in hooks/hooks.json or plugin.json beside the module: a command (a shell when it has no args), an HTTP request, an MCP tool or a model prompt at an event. They run outside $.no settings hooks: its function hooks alone
Servers it shipsMCP servers (a program, or a URL; a headersHelper is a shell command; a .mcpb bundle is unpacked at run time), LSP servers, monitors (a shell command for the whole session) and bin/ (on the PATH of the Bash tool).ships no MCP or LSP server, no monitor, no bin/
Skills, commands, agentsWhat its Markdown declares beyond text: allowed-tools granted for the turn, hooks added when a skill is invoked, a command run before Claude reads the skill.no skills, commands, agents or workflows
Tools and MCPWhether every tool it calls through $.tool.call and $.mcp.call is named in the code, and none is a shell (Bash through the tool runs a shell without $.process).calls no tool, MCP server or command
Asks of the modelCompletions it runs ($.model.complete, fork, classify), subagents it spawns, prompts it submits as you, and the tools, commands and agents it adds.adds command task-tree, adds command task-demo, adds tool todo_write
Events it hooksBy what a hook there can do: gates (refuse a tool call, a prompt, a setting, another plugin), shapes (what the model reads: the system prompt, tool descriptions, each request), reads (your input, the events of the settings hooks, every event with *), and the rest.gates: tool.call (TaskCreate, TaskUpdate, TodoWrite), command.run (task-demo, task-tree) · also: session.start, turn.complete, ui.render (AbovePrompt, Pane)
Reads, by nameThe environment variables and files it names, and whether it reads the transcript, settings.json, the prompt box or the mouse selection.files: a path computed at run time
Writes, by nameThe files and environment variables it names, and whether it changes settings, the prompt box, the clipboard, the conversation (a row the model reads) or another session.writes no files, environment variables, settings or conversation rows

This is a reading of the code text, not a security review: it does not run the mod, and it cannot see what a program the mod starts does. The check before installing is yours. How mods are chosen

Install it

Check it yourself before you install it. Mods run unsandboxed, with your permissions, and ModsCode does not vouch for what this code does. Read its code (or run claude plugin validate . in its folder), weigh what it reaches, and install the commit you read.

From its marketplace

Its repository is its marketplace. Add that marketplace (in the terminal with these commands, or in the desktop app's plugin settings) and install the mod from it:

/plugin marketplace add vmlinuz82/claude-mods
/plugin install task-list@claude-mods
/reload-plugins

This installs the marketplace's latest commit, which may not be the one read here (b23f514242d7). Compare them before you install. /reload-plugins loads it into a session that is already open.

Try the commit ModsCode read

No marketplace needed. In a terminal, clone the repository, check out the commit read, validate the mod, and load it for one session:

git clone https://github.com/vmlinuz82/claude-mods
git -C claude-mods checkout b23f514242d71dd0595f8571c97463c6a59e335f
claude plugin validate claude-mods/plugins/task-list
claude --plugin-dir claude-mods/plugins/task-list

The validate line lists the events the mod hooks and what it asks Claude Code to do, without running it. The last line loads the mod for this session only and writes nothing to your settings. If the author has rewritten history, the commit may no longer exist.

Ask Claude or ChatGPT about it

With ModsCode added as a connector, Claude or ChatGPT can read this mod's code, what it reaches and how its controls are wired, and build on them. Ask it like this:

Read the ModsCode mod "vmlinuz82-task-list" with its code and make me one like it

Add the ModsCode MCP to Claude or ChatGPT

Similar mods

More from this repository

Badge for your README

If this is your mod, paste this into your README. It links to this page.

README.md
[![ModsCode](https://modscode.com/badge/vmlinuz82-task-list.svg)](https://modscode.com/claude-mods/mods/vmlinuz82-task-list/)