{"id":49105578,"url":"https://github.com/antoniwan/my-prompt-library","last_synced_at":"2026-04-21T01:33:08.214Z","repository":{"id":339082633,"uuid":"1160325173","full_name":"antoniwan/my-prompt-library","owner":"antoniwan","description":"A Git-native prompt library. Markdown files are the source of truth. No database, no platform lock-in, no noise.","archived":false,"fork":false,"pushed_at":"2026-03-31T11:04:37.000Z","size":3094,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-31T13:10:58.185Z","etag":null,"topics":["ai","ai-prompts","webapp"],"latest_commit_sha":null,"homepage":"https://my-prompt-library-lilac.vercel.app","language":"Astro","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/antoniwan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-17T20:05:57.000Z","updated_at":"2026-03-31T11:04:41.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/antoniwan/my-prompt-library","commit_stats":null,"previous_names":["antoniwan/my-prompt-library"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/antoniwan/my-prompt-library","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antoniwan%2Fmy-prompt-library","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antoniwan%2Fmy-prompt-library/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antoniwan%2Fmy-prompt-library/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antoniwan%2Fmy-prompt-library/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/antoniwan","download_url":"https://codeload.github.com/antoniwan/my-prompt-library/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antoniwan%2Fmy-prompt-library/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32072975,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T21:26:33.338Z","status":"ssl_error","status_checked_at":"2026-04-20T21:26:22.081Z","response_time":94,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","ai-prompts","webapp"],"created_at":"2026-04-21T01:33:07.612Z","updated_at":"2026-04-21T01:33:08.206Z","avatar_url":"https://github.com/antoniwan.png","language":"Astro","funding_links":[],"categories":[],"sub_categories":[],"readme":"# My Prompt Library (MPL)\n\nA small, Git-native library of structured prompts. Markdown files in this repository are the source of truth. There is no database or runtime backend.\n\n## Prerequisites\n\n- **Node.js** 18+ (Astro 5 requirement; repo does not pin a version)\n- **npm** or **pnpm**\n\n## Setup\n\n```bash\nnpm install\n```\n\nOr with pnpm:\n\n```bash\npnpm install\n```\n\nNo environment variables are required for local development.\n\nFor production, set **`SITE`** to your site’s full URL (e.g. `https://your-domain.com`) so canonical links and Open Graph URLs are correct. Many hosts (Vercel, Netlify, Cloudflare Pages) provide a default URL you can use or override.\n\n## Run\n\n```bash\nnpm run dev\n```\n\nOpen **[http://localhost:4321](http://localhost:4321)**. You should see the home page and be able to open **Prompts**, open a prompt, use the search bar, and filter on `/prompts/` by tag, difficulty, and author.\n\n## Project Structure\n\n| Path                    | Purpose                                                                                                    |\n| ----------------------- | ---------------------------------------------------------------------------------------------------------- |\n| `content/prompts/`      | Prompt Markdown files. Filename (without `.md`) = URL slug.                                                |\n| `src/content.config.ts` | Content collection schema (Zod). Defines required frontmatter and validation. See also `PROMPT-SCHEMA.md`. |\n| `src/pages/`            | Astro routes: `/`, `/prompts/`, `/prompts/[id]/`, `/tags/`, `/tags/[tag]/`, `/search/`, `/404`.            |\n| `src/layouts/`          | Shared layout (header, footer, theme, search).                                                             |\n| `src/components/`       | Reusable UI: `PromptCard`, `TagPill`, `SearchBar`, `ThemeToggle`, `PageHeader`, `ButtonPrimary`.           |\n| `src/styles/global.css` | Global design tokens and Tailwind import.                                                                  |\n| `public/`               | Static assets (favicons, PWA, images).                                                                     |\n\n## How to Make a Change\n\n**Add a prompt**\n\n1. Add a new `.md` file under `content/prompts/`. Use the filename as the slug (e.g. `my-prompt-name.md` → slug `my-prompt-name`).\n2. Include required frontmatter (canonical reference: `PROMPT-SCHEMA.md` and `src/content.config.ts`): `title`, `slug`, `tags` (array), `author`, `difficulty` (`beginner` | `intermediate` | `advanced`), `visibility` (`public` | `draft`, default `public`), `created_at`, `updated_at` (YYYY-MM-DD). Optional: `summary`, `models_tested` (array of strings), `quality_score` (number 0–5).\n3. Run `npm run dev` and open `/prompts/` or the new `/prompts/\u003cslug\u003e/` to confirm it appears. Only `visibility: public` entries are shown on the site.\n\n**Modify behavior or UI**\n\n- Edit the relevant page in `src/pages/`, component in `src/components/`, or layout in `src/layouts/`. Styling: `src/styles/global.css` or Tailwind classes in components.\n\n**Test and verify**\n\n- `npm run dev` — confirm locally.\n- `npm run build` — must complete without errors. Preview with `npm run preview`.\n- `npm run lint` — ESLint (Astro + TypeScript). Fix auto-applied where possible.\n- `npm run format` — Prettier (including `.astro`). Use `npm run format:check` to verify without writing.\n\nValidation is via the content schema (build fails if frontmatter is invalid), lint, and manual checks.\n\n## Known Constraints\n\n- **Slug = filename:** The prompt URL is `/prompts/\u003cid\u003e/`. With the glob loader, `id` is the file path relative to `content/prompts/` without the `.md` extension. The `slug` in frontmatter should match the filename (e.g. `my-prompt.md` → `slug: my-prompt`). Mismatches can break links.\n- **Visibility:** Only entries with `visibility: public` are included in lists, tags, search, and `getStaticPaths`. `draft` entries exist in the repo but are never rendered on the site.\n- **Schema is strict:** Adding or changing frontmatter fields requires updating `src/content.config.ts` (Zod schema). Invalid or missing required fields cause the build to fail.\n- **Search index:** Header search and the `/search/` page each build their own in-memory index from the prompts collection; there is no shared search module. Changing what’s searchable (e.g. new fields) may require edits in both `SearchBar.astro` and `search/index.astro`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fantoniwan%2Fmy-prompt-library","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fantoniwan%2Fmy-prompt-library","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fantoniwan%2Fmy-prompt-library/lists"}