billgil (@billgil) header
billgil (@billgil) profile picture

Point your agent ay my profile. Vibe like a pro

Belfast, Ireland
Joined March 2010
Photo by billgil (@billgil)Photo by billgil (@billgil)Photo by billgil (@billgil)Photo by billgil (@billgil)Photo by billgil (@billgil)Photo by billgil (@billgil)Photo by billgil (@billgil)Photo by billgil (@billgil)Photo by billgil (@billgil)Photo by billgil (@billgil)
@ mentions pull files into context precisely. "@src/auth/middleware.ts explain why this is slow" Better than pasting or hoping it finds the right file. Works for directories too. Combine with CLAUDE.md for maximum accuracy. #ClaudeCode #DevTools
46
M枚tley Cr眉e ~ "Kickstart My Heart"
2
71
4
347
8,206
It can create commits and PRs. "Commit the auth changes with a good message and open a PR." It runs git status, writes the message, pushes, and uses the GitHub CLI or MCP if available. You still review the diff. #ClaudeCode #Git #AICoding
64
Let it use the terminal. Claude Code can run git, npm, tests, docker, etc. "Run the tests and fix anything that fails" works because it sees the output and iterates. Keep permissions tight. Review commands before they run if you're cautious. #ClaudeCode #AICoding
3
4
171
Skills vs CLAUDE.md. CLAUDE.md = always-on project briefing. Skills = on-demand workflows Claude invokes when relevant. Put architecture in CLAUDE.md. Put "how we create a migration" or "how we write a test" in skills. #ClaudeCode #DevTools
60
Skills are reusable workflows. Drop markdown files in \~/.claude/skills/ or .claude/skills/. Each skill has a description Claude uses to decide when to invoke it. "scaffold a NestJS module with JWT" can trigger a skill that knows your exact patterns. #ClaudeCode #DevTools
52
Clear context deliberately. /clear starts fresh. /compact keeps a summary. Long sessions accumulate noise. Start a new conversation for a new feature unless the previous work is still relevant. Your context window is a scarce resource. #ClaudeCode #AICoding
30
/compact when the context gets long. Claude Code keeps the full conversation. After a big exploration it can fill up. /compact summarizes history and frees space while keeping the important decisions. Do this before starting a new feature on the same session. #ClaudeCode #AICoding
35
Start with a plan, not a code dump. "Look at the auth flow and propose a plan to add OAuth. List files you'll touch and tradeoffs." Let it explore first. Then say "implement the plan". You stay in control and it uses less context on wrong paths. #ClaudeCode #PromptEngineering
62
Rules files are hard constraints. .claude/rules/no-any.md .claude/rules/security.md Claude treats these as non-negotiable. Use them for "never use any", "always validate input", "no console.log in production". Lighter than stuffing everything into CLAUDE.md. #ClaudeCode #AICoding
44
Have you ever heard of "kruger dunning effect"? This explains so much in life 馃槀
41
CLAUDE.md is your project's system prompt. Put it in the repo root. Claude reads it every session. # Stack - Next.js 15 App Router - TypeScript strict - Prisma + PostgreSQL # Rules - Prefer Server Components - No any types - Tests with Vitest This is the highest-leverage file you can write. #ClaudeCode #AICoding
1
1
90
Install and auth once, then it just works. claude --version claude auth login Or the VS Code extension if you prefer the editor. Both use the same models and tools. First session: ask it to summarize the repo so you know it sees the right files. #ClaudeCode #AICoding #setup
68
Claude Code setup in 30 seconds. npm install -g @anthropic-ai/claude-code claude Auth once via browser. Then cd into any repo and start talking. It reads your files, runs tools, and edits code. No VS Code extension required for the terminal version. #ClaudeCode #AICoding #DevTools
1
3
136
The NestJS stuff teams still skip: - Standard Schema (Zod etc.) on @Body/@Query (v12) - @nestjs/observe for framework-aware traces - Dynamic modules + custom providers - Reflector + custom metadata decorators - Fastify adapter for lower latency - BullMQ + CacheInterceptor - Hybrid HTTP + microservice apps - Vitest + oxlint defaults on new ESM projects Ship one of these this week. Stop writing everything in the controller. #NestJS #WebDev
58
Retro gamer tribute, built with HTML & CSS
36,016
NestJS 12: native observability. import { ObserveModule } from '@nestjs/observe' ObserveModule.forRoot({ apiKey: process.env.OBSERVE_KEY }) Hooks into Nest lifecycle (controllers, providers, jobs) instead of only patching the HTTP server. Traces know about your modules. #NestJS #WebDev
59
NestJS 12: Standard Schema validation on route decorators. @Post() create(@Body({ schema: createUserSchema }) body: CreateUser) { return this.users.create(body) } Zod, Valibot, ArkType work directly once the pipe is registered. class-validator still fine; this removes the wrapper packages. #NestJS #WebDev
1
1
111
Queues with BullMQ keep heavy work off the request. @Processor('emails') export class EmailProcessor { @Process('welcome') async handle(job: Job) { await this.mailer.send(job.data) } } Inject the queue and add jobs from a service. Workers run in the same process or separate. #NestJS #WebDev
37
Custom parameter decorators extract what you need. export const User = createParamDecorator( (data: unknown, ctx: ExecutionContext) => { return ctx.switchToHttp().getRequest().user } ) @Get() me(@User() user: UserEntity) { return user } Stops repeating req.user extraction. Pair with a guard that attaches the user. #NestJS #WebDev
1
67