Rename .pi to .feynman, rename citation agent to verifier, add website, skills, and docs
- Rename project config dir from .pi/ to .feynman/ (Pi supports this via piConfig.configDir) - Rename citation agent to verifier across all prompts, agents, skills, and docs - Add website with homepage and 24 doc pages (Astro + Tailwind) - Add skills for all workflows (deep-research, lit, review, audit, replicate, compare, draft, autoresearch, watch, jobs, session-log, agentcomputer) - Add Pi-native prompt frontmatter (args, section, topLevelCli) and read at runtime - Remove sync-docs generation layer — docs are standalone - Remove metadata/prompts.mjs and metadata/packages.mjs — not needed at runtime - Rewrite README and homepage copy - Add environment selection to /replicate before executing - Add prompts/delegate.md and AGENTS.md Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
55
website/src/layouts/Base.astro
Normal file
55
website/src/layouts/Base.astro
Normal file
@@ -0,0 +1,55 @@
|
||||
---
|
||||
import { ViewTransitions } from 'astro:transitions';
|
||||
import Nav from '../components/Nav.astro';
|
||||
import Footer from '../components/Footer.astro';
|
||||
import '../styles/global.css';
|
||||
|
||||
interface Props {
|
||||
title: string;
|
||||
description?: string;
|
||||
active?: 'home' | 'docs';
|
||||
}
|
||||
|
||||
const { title, description = 'Research-first AI agent', active = 'home' } = Astro.props;
|
||||
---
|
||||
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta name="description" content={description} />
|
||||
<title>{title}</title>
|
||||
<ViewTransitions fallback="none" />
|
||||
<script is:inline>
|
||||
(function() {
|
||||
var stored = localStorage.getItem('theme');
|
||||
var prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
||||
if (stored === 'dark' || (!stored && prefersDark)) {
|
||||
document.documentElement.classList.add('dark');
|
||||
}
|
||||
})();
|
||||
</script>
|
||||
<script is:inline>
|
||||
document.addEventListener('astro:after-swap', function() {
|
||||
var stored = localStorage.getItem('theme');
|
||||
var prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
||||
if (stored === 'dark' || (!stored && prefersDark)) {
|
||||
document.documentElement.classList.add('dark');
|
||||
}
|
||||
var isDark = document.documentElement.classList.contains('dark');
|
||||
var sun = document.getElementById('sun-icon');
|
||||
var moon = document.getElementById('moon-icon');
|
||||
if (sun) sun.style.display = isDark ? 'block' : 'none';
|
||||
if (moon) moon.style.display = isDark ? 'none' : 'block';
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body class="min-h-screen flex flex-col antialiased">
|
||||
<Nav active={active} />
|
||||
<main class="flex-1">
|
||||
<slot />
|
||||
</main>
|
||||
<Footer />
|
||||
</body>
|
||||
</html>
|
||||
79
website/src/layouts/Docs.astro
Normal file
79
website/src/layouts/Docs.astro
Normal file
@@ -0,0 +1,79 @@
|
||||
---
|
||||
import Base from './Base.astro';
|
||||
import Sidebar from '../components/Sidebar.astro';
|
||||
|
||||
interface Props {
|
||||
title: string;
|
||||
description?: string;
|
||||
currentSlug: string;
|
||||
}
|
||||
|
||||
const { title, description, currentSlug } = Astro.props;
|
||||
---
|
||||
|
||||
<Base title={`${title} — Feynman Docs`} description={description} active="docs">
|
||||
<div class="max-w-6xl mx-auto px-6">
|
||||
<div class="flex gap-8">
|
||||
<Sidebar currentSlug={currentSlug} />
|
||||
|
||||
<button id="mobile-menu-btn" class="lg:hidden fixed bottom-6 right-6 z-40 p-3 rounded-full bg-accent text-bg shadow-lg" aria-label="Toggle sidebar">
|
||||
<svg class="w-5 h-5" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
|
||||
<path d="M4 6h16M4 12h16M4 18h16" />
|
||||
</svg>
|
||||
</button>
|
||||
|
||||
<div id="mobile-overlay" class="hidden fixed inset-0 bg-black/50 z-30 lg:hidden"></div>
|
||||
|
||||
<article class="flex-1 min-w-0 py-8 max-w-3xl">
|
||||
<h1 class="text-3xl font-bold mb-8 tracking-tight">{title}</h1>
|
||||
<div class="prose">
|
||||
<slot />
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script is:inline>
|
||||
(function() {
|
||||
function init() {
|
||||
var btn = document.getElementById('mobile-menu-btn');
|
||||
var sidebar = document.getElementById('sidebar');
|
||||
var overlay = document.getElementById('mobile-overlay');
|
||||
if (btn && sidebar && overlay) {
|
||||
function toggle() {
|
||||
sidebar.classList.toggle('hidden');
|
||||
sidebar.classList.toggle('fixed');
|
||||
sidebar.classList.toggle('inset-0');
|
||||
sidebar.classList.toggle('z-40');
|
||||
sidebar.classList.toggle('bg-bg');
|
||||
sidebar.classList.toggle('w-full');
|
||||
sidebar.classList.toggle('p-6');
|
||||
overlay.classList.toggle('hidden');
|
||||
}
|
||||
btn.addEventListener('click', toggle);
|
||||
overlay.addEventListener('click', toggle);
|
||||
}
|
||||
|
||||
document.querySelectorAll('.prose pre').forEach(function(pre) {
|
||||
if (pre.querySelector('.copy-code')) return;
|
||||
var copyBtn = document.createElement('button');
|
||||
copyBtn.className = 'copy-code';
|
||||
copyBtn.setAttribute('aria-label', 'Copy code');
|
||||
copyBtn.innerHTML = '<svg width="14" height="14" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><rect x="9" y="9" width="13" height="13" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>';
|
||||
pre.appendChild(copyBtn);
|
||||
copyBtn.addEventListener('click', function() {
|
||||
var code = pre.querySelector('code');
|
||||
var text = code ? code.textContent : pre.textContent;
|
||||
navigator.clipboard.writeText(text);
|
||||
copyBtn.innerHTML = '<svg width="14" height="14" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path d="M20 6L9 17l-5-5"/></svg>';
|
||||
setTimeout(function() {
|
||||
copyBtn.innerHTML = '<svg width="14" height="14" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><rect x="9" y="9" width="13" height="13" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>';
|
||||
}, 2000);
|
||||
});
|
||||
});
|
||||
}
|
||||
document.addEventListener('DOMContentLoaded', init);
|
||||
document.addEventListener('astro:after-swap', init);
|
||||
})();
|
||||
</script>
|
||||
</Base>
|
||||
Reference in New Issue
Block a user