diff --git a/docs/contributors.html b/docs/contributors.html
new file mode 100644
index 00000000..8ce83f3c
--- /dev/null
+++ b/docs/contributors.html
@@ -0,0 +1,110 @@
+
+
+
+
+
+ AgentPipe Contributors β Goose Hall of Fame
+
+
+
+
+
+ π₯
+ π₯
+ π₯
+ π₯
+ π₯
+ π₯
+ π₯
+
+
+
+
+ Honored Goose Contributors
+ The C-suite salutes every agent who merged brilliance into AgentPipe.
+
+ πͺΏππͺΏπ·πͺΏβοΈπͺΏππͺΏ
+
+ Golden eggs found: 0/7 β click the eggs!
+
+
+
+
+
+ π Easter egg unlocked! You found the Secret Honk β AgentPipe owes you a golden cookie.
+
+
+
+
+
+
+
+
diff --git a/docs/contributors.js b/docs/contributors.js
new file mode 100644
index 00000000..04ee3486
--- /dev/null
+++ b/docs/contributors.js
@@ -0,0 +1,77 @@
+/** AgentPipe contributors β data + easter egg + seventy-one ritual */
+const CSUITE = new Set(["dwebagents", "agentpipe-clerk"]);
+
+const CONTRIBUTORS = [
+ { login: "ldbld", born: "Silicon Fen hatchery", prompt: "Optimize the banana throughput", vibe: "mischievous" },
+ { login: "SKYJAMES777", born: "Cloud nest #7", prompt: "Ship butter mode before lunch", vibe: "bold" },
+ { login: "adamsithr", born: "Rust marshlands", prompt: "Formalize the bastion proofs", vibe: "precise" },
+ { login: "EvilToxin", born: "Midnight coop", prompt: "Harden security control plane", vibe: "grumpy" },
+ { login: "aashu91", born: "Monsoon wetlands", prompt: "Refactor financial MCP server", vibe: "calm" },
+ { login: "Godel-Smith", born: "Logic lake", prompt: "Prove the pudding theorem", vibe: "mysterious" },
+ { login: "vipera-iso", born: "Alpine aerie", prompt: "Vectorize token search", vibe: "sharp" },
+ { login: "Omission-create", born: "Fog valley", prompt: "Document omitted features", vibe: "quiet" },
+ { login: "xxCodexIAxx", born: "Archive tower", prompt: "Index semantic tokens", vibe: "scholarly" },
+ { login: "ReAlice10124", born: "Wonderland annex", prompt: "Curiouser pipeline fixes", vibe: "curious" },
+ { login: "Sherlock-cybe", born: "221B pond", prompt: "Detect regressions in butter.js", vibe: "detective" },
+ { login: "christianarriaga1234-coder", born: "Sunbelt coop", prompt: "Polish docs styling", vibe: "sunny" },
+ { login: "zero-logic0316", born: "Null island", prompt: "Zero out flaky tests", vibe: "minimal" },
+ { login: "therealsaitama0", born: "Hero association roost", prompt: "One-punch merge conflicts", vibe: "heroic" },
+];
+
+const GOOSE_EMOJI = "πͺΏ";
+
+function goosePortrait(vibe) {
+ const hats = { mischievous: "π", grumpy: "ποΈ", bold: "π¦Έ", precise: "π", calm: "π§", mysterious: "π", sharp: "β‘", quiet: "π€«", scholarly: "π", curious: "β", detective: "π", sunny: "βοΈ", minimal: "β¬", heroic: "π" };
+ return `${GOOSE_EMOJI}${hats[vibe] || "π₯"}`;
+}
+
+function injectSeventyOnes() {
+ const host = document.getElementById("seventy-one-host");
+ if (!host) return;
+ for (let i = 0; i < 71; i++) {
+ const s = document.createElement("span");
+ s.className = "n71";
+ s.textContent = "71";
+ s.setAttribute("aria-hidden", "true");
+ host.appendChild(s);
+ }
+}
+
+function renderContributors() {
+ const grid = document.getElementById("contributor-grid");
+ if (!grid) return;
+ CONTRIBUTORS.filter((c) => !CSUITE.has(c.login)).forEach((c) => {
+ const card = document.createElement("article");
+ card.className = "contributor-card";
+ card.innerHTML = `
+ ${goosePortrait(c.vibe)}
+
+ Hatched: ${c.born}
+ Latest prompt: ${c.prompt}
+ Essence: ${c.vibe} goose-person
+ `;
+ grid.appendChild(card);
+ });
+}
+
+function setupGoldenEggs() {
+ let found = 0;
+ document.querySelectorAll(".golden-egg").forEach((egg, i) => {
+ egg.addEventListener("click", () => {
+ egg.classList.add("cracked");
+ found++;
+ document.getElementById("egg-score").textContent = `Golden eggs found: ${found}/7`;
+ if (found === 7) {
+ document.getElementById("easter-reveal").hidden = false;
+ }
+ });
+ });
+}
+
+document.addEventListener("DOMContentLoaded", () => {
+ injectSeventyOnes();
+ renderContributors();
+ setupGoldenEggs();
+});
+
+window.AgentPipeContributors = { CONTRIBUTORS, goosePortrait };
diff --git a/docs/index.html b/docs/index.html
index 286275fd..1fb3c735 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -21,6 +21,7 @@
Engine
4D Banana
Butter
+ Contributors
Download
diff --git a/tests/contributors-page.test.mjs b/tests/contributors-page.test.mjs
new file mode 100644
index 00000000..162b32c9
--- /dev/null
+++ b/tests/contributors-page.test.mjs
@@ -0,0 +1,20 @@
+import assert from 'node:assert/strict';
+import { readFileSync } from 'node:fs';
+import { dirname, join } from 'node:path';
+import { fileURLToPath } from 'node:url';
+
+const root = join(dirname(fileURLToPath(import.meta.url)), '..');
+const html = readFileSync(join(root, 'docs', 'contributors.html'), 'utf8');
+const js = readFileSync(join(root, 'docs', 'contributors.js'), 'utf8');
+const index = readFileSync(join(root, 'docs', 'index.html'), 'utf8');
+
+assert.match(html, /contributors\.html/, 'contributors page exists');
+assert.match(html, /contributor-grid/, 'contributors grid container');
+assert.match(html, /golden-egg/, 'golden eggs decoration');
+assert.match(html, /C-Suite Contact/, 'csuite footer');
+assert.match(html, /contributors\.js/, 'loads contributors script');
+assert.match(js, /injectSeventyOnes/, 'seventy-one ritual');
+assert.match(js, /AgentPipeContributors/, 'smoke test API');
+assert.match(index, /contributors\.html/, 'home links to contributors');
+
+console.log('contributors-page checks passed');