AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
ScreenCI 코딩 에이전트에 하나의 프롬프트로 제어
One prompt to your coding agent. It records a narrated tutorial of your real app on your own machine, ready for your help center or docs. Optional Playwright export for CI.
개발 도구TypeScript · HTMLGitHub @screenci온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Product videos your whole team makes with one prompt.
Anyone on the team describes the video they want in the
ScreenCI web app, pastes one prompt into a coding
agent, and gets back a narrated, auto-zoomed walkthrough of the real app. They
edit narration, voices, and languages in the browser. Engineers keep the
videos in the repository, where each one is a Playwright E2E test: when the
UI ships, CI runs npx screenci export and the videos regenerate, and a flow
that broke fails the run. This package is the CLI and the authoring API behind
all of it.README 전문 보기 ↗Tutorial videos of your app, from one prompt.
Describe the video in one sentence, paste one prompt into the coding agent you already use, and get back a narrated, auto-zoomed walkthrough of your real app, recorded on your own machine. Edit narration, voices, and languages in the browser. Engineers keep the videos in the repository, where each one is a Playwright E2E test: CI re-records them on every push, and a flow that broke fails the run. This package is the CLI and the authoring API behind all of it.
The raw recording, its timing data, and the text files of the screenci/
folder (the config and the video scripts; set uploadSources: false to keep
them local). Never .env files, lockfiles, your app's source, or your
signed-in browser session. redact(locator) masks secrets in the page before
the frame is captured. Full list:
What ScreenCI sends.
Learn more at screenci.com, or start from Make videos by prompt (no repository needed) and Repository and CI (the engineering hand-off).
npm init screenci@latest
# or (pnpm 11, the --config flags are a temporary workaround)
pnpm --config.minimum-release-age-exclude=screenci --config.enable-global-virtual-store=false dlx screenci@latest init
This scaffolds a self-contained screenci/ directory with its own
dependencies and installs Chromium. The directory is isolated from the
surrounding workspace, which keeps installation reliable inside monorepos.
Then write a video, run it locally, refine it, and export the final output:
npx screenci test # author the video
npx screenci preview # record live previews and print the link
npx screenci export # render and download the finished video
Full docs:
Video scripts are Playwright-style files with a .screenci.ts extension. If you
already know Playwright locators, navigation, and waiting, you already know
most of the automation layer.
// recordings/onboarding.screenci.ts
import { hide, speed, time, video } from 'screenci'
video('Onboarding flow', async ({ page }) => {
await hide(async () => {
await page.goto('https://app.example.com/signup')
})
await page.getByLabel('Email').fill('[email protected]')
await page.getByRole('button', { name: 'Create account' }).click()
await speed(0.5, async () => {
await page.getByRole('button', { name: 'Open dashboard tour' }).click()
})
await time(1000, async () => {
await page.getByRole('button', { name: 'Skip tutorial' }).click()
})
await page.getByRole('heading', { name: 'Dashboard' }).waitFor()
})
Each video() call becomes one output video. The title becomes the filename
and the remote video identity. Inside video(), page is a ScreenCIPage: a
Playwright Page with animated cursor movement and visible typing layered on
top of normal Playwright behavior.
hide() removes setup entirely. speed() and time() keep a section visible
but remap its rendered duration.
| Export | What it does |
|---|---|
defineConfig | Wraps Playwright config with ScreenCI defaults |
video | Declares a video recording test |
video.narration | Declares narration cues (per language or shared) for a video |
hide | Cuts setup or cleanup out of the visible recording |
autoZoom | Smooth camera follow for an interaction block |
zoomTo | Manual camera framing for a locator or point |
resetZoom | Returns from manual framing to the full viewport |
video.overlays | Draws timed overlays (rings, callouts, media) over the video |
voices | Available voice constants such as voices.Ava |
modelTypes | Narration model constants |
See the docs for configuration, narration, camera, and CI setup.
Questions, ideas, or want to show off your videos? Join us on Discord.