Markdown Converter
Agent skill for markdown-converter
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Sign in to like and favorite skills
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
This is a Turborepo monorepo for a personal portfolio website showcasing projects, skills, and experience. The project uses Bun as the primary runtime and package manager.
├── packages/ # Shared libraries │ ├── core/ # Business logic (@portfolio/core) │ ├── types/ # TypeScript definitions (@portfolio/types) │ ├── ui/ # UI components (@portfolio/ui) │ └── utils/ # Utility functions (@portfolio/utils) ├── apps/ │ ├── portfolio/ # Main portfolio website │ └── blog/ # Blog application (optional)
Root level commands (run from project root):
bun install - Install all workspace dependenciesbun dev - Start all apps in development mode with hot reloadbun build - Build all packages and apps in dependency orderbun test - Run tests across all workspacesbun type-check - Type check all TypeScript filesbun lint - Lint all code (when configured)Individual app development:
cd apps/portfolio && bun dev - Run only the portfolio appcd apps/blog && bun dev - Run only the blog appPackages follow a simplified dependency hierarchy:
@portfolio/types (base, no dependencies)@portfolio/core depends on @portfolio/types@portfolio/ui depends on @portfolio/types@portfolio/utils depends on @portfolio/typesworkspace:*Import packages using path aliases:
import { ProjectType } from '@portfolio/types' import { getProjects } from '@portfolio/core' import { Button } from '@portfolio/ui' import { formatDate } from '@portfolio/utils'
Default to using Bun instead of Node.js.
bun <file> instead of node <file> or ts-node <file>bun test instead of jest or vitestbun build <file.html|file.ts|file.css> instead of webpack or esbuildbun install instead of npm install or yarn install or pnpm installbun run <script> instead of npm run <script> or yarn run <script> or pnpm run <script>Bun.serve() supports WebSockets, HTTPS, and routes. Don't use express.bun:sqlite for SQLite. Don't use better-sqlite3.Bun.redis for Redis. Don't use ioredis.Bun.sql for Postgres. Don't use pg or postgres.js.WebSocket is built-in. Don't use ws.Bun.file over node:fs's readFile/writeFilels instead of execa.Use
bun test to run tests.
import { test, expect } from "bun:test"; test("hello world", () => { expect(1).toBe(1); });
Use HTML imports with
Bun.serve(). Don't use vite. HTML imports fully support React, CSS, Tailwind.
Server:
import index from "./index.html" Bun.serve({ routes: { "/": index, "/api/projects": { GET: (req) => { return new Response(JSON.stringify({ projects: [] })); }, }, }, development: { hmr: true, console: true, } })
HTML files can import .tsx, .jsx or .js files directly and Bun's bundler will transpile & bundle automatically.
<link> tags can point to stylesheets and Bun's CSS bundler will bundle.
<html> <body> <h1>Keanu's Portfolio</h1> <script type="module" src="./frontend.tsx"></script> </body> </html>
With the following
frontend.tsx:
import React from "react"; // import .css files directly and it works import './index.css'; import { createRoot } from "react-dom/client"; const root = createRoot(document.body); export default function Portfolio() { return <h1>Welcome to my Portfolio!</h1>; } root.render(<Portfolio />);
Then, run index.ts
bun --hot ./index.ts
For more information, read the Bun API docs in
node_modules/bun-types/docs/**.md.
Do what has been asked; nothing more, nothing less. NEVER create files unless they're absolutely necessary for achieving your goal. ALWAYS prefer editing an existing file to creating a new one. NEVER proactively create documentation files (*.md) or README files. Only create documentation files if explicitly requested by the User.