Inspiration
GhostTab is for the articles, documentation and links we save but never read. Instead of another growing bookmark list, it gives you one clear next link. The haunted-library costume turns forgotten links into ghosts to lay to rest.
What it does
Paste one HTTP(S) URL per line, load a queue, open a link, then mark it read or skip it. Track progress, reload without losing your place and export pending links. A demo queue lets judges try the complete flow without using personal links.
How we built it
Built on October 31, 2026 for the Costume Contest with Kiro CLI. Kiro implemented the application, CSS ghost artwork, tests and documentation from a scoped product prompt, then repaired issues found through browser QA. ChatGPT/Codex orchestrated QA, documentation review and publication, and made a final small correction to clear stale exported text. The root .kiro directory contains specs, steering and actual CLI evidence. Specs document the implementation; this was not a spec-first workflow. No hooks, MCP or property-based testing are claimed.
Technical implementation
Four static application files: HTML, CSS, a DOM controller and a pure JavaScript logic module. No npm dependencies, backend, accounts or application analytics. Queue data stays in localStorage; opening a link contacts its destination normally. HTTP(S)-only validation, textContent rendering and noopener/noreferrer links reduce injection and tab-opening risks.
Challenges and lessons
Browser QA caught a blank-window bug, an incorrect progress ARIA update and an Enter-key handler that prevented multiline input. Kiro repaired these and improved contrast and desktop layout. Separating pure queue logic from the DOM made validation straightforward: 48 Node built-in tests pass. The key lesson was to verify AI-generated behavior in the browser and keep documentation aligned with observed behavior.
Design and accessibility
Near-black plum, ivory and lavender, a CSS ghost, keyboard shortcuts, visible focus, an accessible progress bar and reduced-motion support. The layout adapts from a single mobile column to two desktop columns. The core flow was also tested and recorded on an actual iPhone in Safari. Formal user research has not been completed.
Limits and next steps
No cloud sync, page-title fetching, manual reordering or undo. Clearing browser storage deletes the queue. Future work should start with real user testing and accessibility feedback. No measured productivity improvement is claimed.
Try it
Open the app, choose Load demo, mark a link read, skip the next, refresh and export pending links. Local setup: serve the dist folder over HTTP. Tests: node --test tests/core.test.mjs.
Credits
Original application created during the submission period, with Kiro CLI and ChatGPT/Codex assistance. MIT licensed. No stock images, external fonts or music.
Log in or sign up for Devpost to join the conversation.