{
  "path": "/3mfffllhq5c25",
  "site": "at://did:plc:aurnkk6uy6axy66uqaq6dqy6/site.standard.publication/3m6gjuzizxc27",
  "tags": [],
  "$type": "site.standard.document",
  "title": "Baby's First claude skill: tools.jakesimonds.com deploy",
  "content": {
    "$type": "pub.leaflet.content",
    "pages": [
      {
        "id": "019c81b7-2a2f-7dd5-8567-77d99cebab72",
        "$type": "pub.leaflet.pages.linearDocument",
        "blocks": [
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 1,
              "facets": [
                {
                  "index": {
                    "byteEnd": 21,
                    "byteStart": 0
                  },
                  "features": [
                    {
                      "uri": "https://tools.jakesimonds.com",
                      "$type": "pub.leaflet.richtext.facet#link"
                    }
                  ]
                }
              ],
              "plaintext": "tools.jakesimonds.com deploy"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.image",
              "image": {
                "$type": "blob",
                "ref": {
                  "$link": "bafkreifaxl4rz6gsnnneugwo5e6h7cvid2e5c75ejqgvsaem33psxcsrgy"
                },
                "mimeType": "image/png",
                "size": 40419
              },
              "aspectRatio": {
                "width": 1072,
                "height": 450
              }
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "index": {
                    "byteEnd": 50,
                    "byteStart": 42
                  },
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#bold"
                    }
                  ]
                }
              ],
              "plaintext": "At .claude/skills/deploy-tool you'll find SKILL.md: "
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.code",
              "plaintext": "\n---\nname: deploy-tool\ndescription: Deploy a vanilla JS project to tools.jakesimonds.com\ndisable-model-invocation: true\nallowed-tools: Read, Glob, Grep, Bash\nargument-hint: [tool-name]\n---\n\nDeploy the current project's static files to tools.jakesimonds.com.\n\n## Steps\n\n1. **Determine the tool name** from $ARGUMENTS. If not provided, use the current directory name.\n\n2. **Identify the static files** to deploy. Look for the servable directory — typically `web/` or the root if HTML files are at the top level. Copy only what's needed to serve the app: HTML, CSS, JS files. Skip: node_modules, tests, specs, fixtures, markdown files, config files, .git, package.json, etc.\n\n3. **Copy files** into `/Users/jakesimonds/Documents/jake-tools/<tool-name>/`, creating the directory if it doesn't exist. If it already exists, replace the contents (this is a redeploy).\n\n4. **Update the root index** at `/Users/jakesimonds/Documents/jake-tools/index.html` — add a link for the new tool if one doesn't already exist. Keep it simple: `<a href=\"<tool-name>/\"><tool-name></a>`. Maintain alphabetical order.\n\n5. **Commit** in the jake-tools repo:\n   ```\n   cd /Users/jakesimonds/Documents/jake-tools && git add -A && git commit -m \"deploy: <tool-name>\"\n   ```\n\n6. **Deploy** to Cloudflare Pages:\n   ```\n   wrangler pages deploy /Users/jakesimonds/Documents/jake-tools --project-name jake-tools --commit-dirty=true\n   ```\n\n7. **Report** the live URL: `https://tools.jakesimonds.com/<tool-name>/`"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "index": {
                    "byteEnd": 29,
                    "byteStart": 24
                  },
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#italic"
                    }
                  ]
                },
                {
                  "index": {
                    "byteEnd": 124,
                    "byteStart": 115
                  },
                  "features": [
                    {
                      "uri": "https://localhost",
                      "$type": "pub.leaflet.richtext.facet#link"
                    }
                  ]
                }
              ],
              "plaintext": "When I decide the world needs to see my latest vanilla JS vibe project (or if I just get tired of booting it up on localhost and iteration feels done-ish), I can go to the directory that hosts the project, boot up Claude, and then run: "
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.code",
              "plaintext": "/deploy-tool my-awesome-vanilla-JS-project"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "index": {
                    "byteEnd": 120,
                    "byteStart": 75
                  },
                  "features": [
                    {
                      "uri": "https://jakesimonds.com/my-awesome-vanilla-JS-project",
                      "$type": "pub.leaflet.richtext.facet#link"
                    }
                  ]
                }
              ],
              "plaintext": "And that's it! Unless it hits some unforseen snag, the tool will deploy to jakesimonds.com/my-awesome-vanilla-JS-project :D "
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "index": {
                    "byteEnd": 81,
                    "byteStart": 49
                  },
                  "features": [
                    {
                      "uri": "https://tools.simonwillison.net/",
                      "$type": "pub.leaflet.richtext.facet#link"
                    }
                  ]
                }
              ],
              "plaintext": "( tools.{domain} is a pattern I am stealing from https://tools.simonwillison.net/. I think it's a good 2026 agentic coding pattern...have an informal repository of projects. I need to steal more ideas from Simon Willison, he's great.) "
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": ""
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 1,
              "facets": [],
              "plaintext": "My mental model of a 'Skill'"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "It's just markdown. "
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "Markdown for the context window that I can evoke by running a slash command. "
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "So me running /deploy-tool name-of-project just throws the markdown in .claude/skills/project-name/SKILL.md into the context window. And I save having to repeatedly tell LLM the same thing. "
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "Maybe there's more to it I'm missing? As always, I welcome correction. "
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": ""
            }
          }
        ]
      }
    ]
  },
  "bskyPostRef": {
    "cid": "bafyreigocxijo4d7arqofkbpbibi52vzlt7i5t3m5tawjgssxp4sh2mgla",
    "uri": "at://did:plc:aurnkk6uy6axy66uqaq6dqy6/app.bsky.feed.post/3mffflpomkc25",
    "commit": {
      "cid": "bafyreihjq3eh3yubtuxuj2mmgnngxmiazdw6uh5e462xklvqtky4kww35u",
      "rev": "3mffflpso3p2g"
    },
    "validationStatus": "valid"
  },
  "description": "(I'm the baby. Waah.) ",
  "publishedAt": "2026-02-21T19:53:07.446Z"
}