Skip to content

Instantly share code, notes, and snippets.

View camillanapoles's full-sized avatar

Camilla Napoles camillanapoles

View GitHub Profile
@camillanapoles
camillanapoles / SKILL.md
Created August 4, 2026 13:31 — forked from weytani/SKILL.md
para-organizer skill v2.0 (PARA Method file-system organizer) — SKILL.md + references/ (flattened as 'references--*' since gists have no folders)
name para-organizer
version 2.0
description Implement the PARA Method (Projects, Areas, Resources, Archives) on a user's local file system. Use this skill whenever the user wants to: organize their files or folders using PARA, set up a PARA system from scratch, classify existing files/folders into Projects/Areas/Resources/Archives, do a PARA audit or cleanup of their digital environment, identify their current projects and areas of responsibility, or reorganize a messy Documents folder. Also trigger when the user mentions 'PARA', 'Second Brain file organization', 'organize my files by actionability', or asks which folders should be projects vs areas vs resources. This skill scans real files, presents a complete reorganization plan for the user to approve, then executes it.

PARA Organizer — File System Setup Skill (v2)

THE GOLDEN RULE: PLAN FIRST, ACT SECOND

LLM Wiki

A pattern for building personal knowledge bases using LLMs.

This is an idea file, it is designed to be copy pasted to your own LLM Agent (e.g. OpenAI Codex, Claude Code, OpenCode / Pi, or etc.). Its goal is to communicate the high level idea, but your agent will build out the specifics in collaboration with you.

The core idea

Most people's experience with LLMs and documents looks like RAG: you upload a collection of files, the LLM retrieves relevant chunks at query time, and generates an answer. This works, but the LLM is rediscovering knowledge from scratch on every question. There's no accumulation. Ask a subtle question that requires synthesizing five documents, and the LLM has to find and piece together the relevant fragments every time. Nothing is built up. NotebookLM, ChatGPT file uploads, and most RAG systems work this way.

@camillanapoles
camillanapoles / deploy-your-own-saas.md
Created July 25, 2026 21:04 — forked from lynsei/deploy-your-own-saas.md
[how to unpack an xpi | asar, reference] #asar #xpi #unpack #xpi-unpack #firefox-extension #userChrome.css #hack #userChrome.css does stuff

Everything I Know About UI Routing

Definitions

  1. Location - The location of the application. Usually just a URL, but the location can contain multiple pieces of information that can be used by an app
    1. pathname - The "file/directory" portion of the URL, like invoices/123
    2. search - The stuff after ? in a URL like /assignments?showGrades=1.
    3. query - A parsed version of search, usually an object but not a standard browser feature.
    4. hash - The # portion of the URL. This is not available to servers in request.url so its client only. By default it means which part of the page the user should be scrolled to, but developers use it for various things.
    5. state - Object associated with a location. Think of it like a hidden URL query. It's state you want to keep with a specific location, but you don't want it to be visible in the URL.
@camillanapoles
camillanapoles / githubpull.md
Created July 25, 2026 21:02 — forked from Jabarabo/githubpull.md
Gist of a stolen gist
Rank Type Prefix/Suffix Length
1 Prefix my+ 2
2 Suffix +online 6
3 Prefix the+ 3
4 Suffix +web 3
5 Suffix +media 5
6 Prefix web+ 3
7 Suffix +world 5
8 Suffix +net 3
9 Prefix go+ 2

Awesome-Selfhosted

Awesome

Selfhosting is the process of locally hosting and managing applications instead of renting from SaaS providers.

This is a list of Free Software network services and web applications which can be hosted locally. Non-Free software is listed on the Non-Free page.

See Contributing.

@camillanapoles
camillanapoles / DNP.md
Created July 25, 2026 20:59 — forked from zsviczian/DNP.md
Daily Mindmap Obsidian Templater Template
excalidraw-plugin parsed
excalidraw-onload-script setTimeout(async()=>{let mmb=window.MindMapBuilderAPI;if(!mmb){await sleep(500);const cmd=Object.keys(app.commands.commands).find((k)=>/.*Mindmap Builder$/.test(k));if(!cmd)return;if(!app.commands.commands[cmd].checkCallback(false))return;await sleep(500);mmb=window.MindMapBuilderAPI;if(!mmb)return;}await mmb.setInputFieldDockStatus({isDocked:false});mmb.performAction(mmb.Actions.FOCUS);},100)

<%* /*

const td=moment(tp.file.title.substr(0,10)); //my DNP filename format is "YYYY-MM-DD dddd"
tR += "Yesterday:: [[Daily Notes/" +
      td.add(-1,'d').format("YYYY-MM-DD dddd") +
@camillanapoles
camillanapoles / callout.css
Created July 25, 2026 20:59 — forked from zsviczian/callout.css
Obsidian custom callouts
.callout[data-callout="todo"] {
--callout-color: 230, 20, 10;
--callout-icon: lucide-lightbulb;
}
.callout[data-callout="interesting"] {
--callout-color: 245, 209, 10;
--callout-icon: lucide-lightbulb;
}
@camillanapoles
camillanapoles / BulkExport.js
Created July 25, 2026 20:58 — forked from zsviczian/BulkExport.js
Build a Searchable Icon Library in Obsidian With Bases
ea = ExcalidrawAutomate;
async function run() {
const files = app.vault.getMarkdownFiles().filter(f=>ea.isExcalidrawFile(f) && f.name.match(/^(?:icon|stickfigure|logo) - /i));
let workingLeaf = app.workspace.getLeaf(true);
//let i = 0; //uncomment this and if statment later for limited debugging.
for (excalidrawFile of files) {
//if(i++>5) continue;
await workingLeaf.openFile(excalidrawFile);
await sleep(200);