본문으로 건너뛰기
cccskills
무료GitHub에 공개

feature-workflow

Taking a multi-PR feature from "shape unknown" to merged without five review rounds per PR: spike until interfaces stop moving, write the contract, cut PRs along contract seams, one review per PR. Use when starting a feature that touches more than one lifecycle object or public interface, when a PR review keeps changing interfaces, or when splitting a large branch.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

설치 방법 보기

포함된 파일(1)

  • SKILL.md4.6 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -->

Local override: $TIKA_SKILLS_LOCAL/feature-workflow/LOCAL.md (default ~/.tika-skills), read after this file, wins on conflict.

Feature Workflow: spike, contract, cut, ship

A complex feature's shape is learned by building it. Learning it on the PR costs a review round per lesson and reshapes what the next round reviews. Keep learning and shipping on different branches.

1. Spike

Throwaway branch. Build end to end, roughly: no CHANGES, docs, or polish; change neighbors freely. Review it (.skills/devs/pr-review/SKILL.md) and let findings reshape interfaces.

Exit: the last review changed edge-case handling, not an interface. While reviews still rename, split, or add methods, keep spiking (pr-review verdict "still spiking").

2. Contract

Write down what the spike taught, half a page per lifecycle object (open/close, acquire/release, publish/abort, spill, rewind): states and transitions, each method's behavior per state, resource ownership on success and every failure path, threading. Put it in the type's javadoc.

Encode it as an Abstract<Type>ContractTest every implementation extends: close twice, abort then close, write after close, throw mid-write then close, resources released on both paths. This is what makes review converge.

3. Cut PRs

Split after the spike, one contract (or tightly coupled group) per PR. Splitting before is guesswork and leaves one PR holding five contracts. Each PR carries only that contract's files, its contract test, CHANGES, docs. Everything else waits for its own PR or the todo doc.

4. Ship

Per PR: one high-effort review, fix, one confirm pass on the delta. A third round means either a fix changed an interface (pull that piece back to the spike) or findings are out of scope (todo doc, not the fix commit). Never widen a PR during review.

You seeDo
Review adds/renames/splits a type or methodkeep spiking; no PR yet
Review finds edge cases onlywrite contract + test, cut PR
PR review changes an interfacepull piece back to spike
PR review finds out-of-scope issuetodo doc, not this PR
Third review round on a PRone of the two above applies

Cross-cutting refactors (chokepoints, wire formats)

A refactor claiming "every X goes through Y" — a policy chokepoint, a single serialization route — is a contract too, with three extra rules. (Learned on TIKA-4848, where all three were violated and each violation became a post-merge review round.)

  • Enforcement ships with the invariant, default-on. The PR that creates the chokepoint also adds the build-breaking check (forbidden-apis ban, architecture test) that keeps call sites on it — every module, explicit opt-outs. Opt-in checks document an invariant; only default-on maintains it. Without this, each missed call site is a review finding instead of a compile failure.

  • One thin end-to-end test per transport surface. A knob that crosses a JVM boundary is exercised through each surface it rides (in-JVM, server, pipes fork, grpc) in the invariant's own PR. Diff review cannot see a parent-resolves/fork-deserializes seam; a wire test can.

  • Producer and consumer change together. Both halves of a serializer/deserializer or parent/fork protocol pair go in the same PR. Cutting by module puts every seam between two reviews, and seams are where cross-cutting bugs live.

No compat shim without a caller: grep before deprecating-in-place. A shim for an API nothing calls is dead weight that still carries bugs.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Ground rules for working in the Tika codebase — git policy, Maven wrapper/repo conventions, building and testing specific modules, code and test conventions, pre-commit checks. Load at session start for any Tika development task.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

apache/tika4.1천2026년 10월 19일 업데이트

Examine what a file claims about itself and what it actually contains — powered by Apache Tika. True content-based type detection (extensions lie), provenance claims (authors, dates, creating application), revision and tamper signals (PDF incremental updates, tracked changes, hidden slides, zip integrity), hidden and embedded content (attachments, macros), risk indicators (PDF JavaScript actions, encryption), and content digests. Evidence gathering, not verdicts: Tika reports what the file asserts and what parsing observed; it does not attribute authorship or validate signatures. Use for triaging suspicious files, provenance questions, e-discovery-style review, or "is this file what it claims to be."

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

apache/tika4.1천2026년 10월 19일 업데이트

Turn almost any file into Markdown plus metadata — PDF, Office, HTML, email, archives, images, audio/video, 1000+ formats — powered by Apache Tika, either via the tika-app CLI (zero setup, one file) or a running tika-server (curl, warm process, many calls). Leads with rmeta (structured, embedded-item-aware output) as the default operation rather than flat concatenated text, since you can't tell whether a file has embedded content from its extension. Covers metadata-only triage, type and language detection, OCR, and output-size discipline for agent context. Use whenever a task involves reading the content of a file whose format you don't want to hand-parse.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

apache/tika4.1천2026년 10월 19일 업데이트

Run Apache Tika as a Docker container when you need guaranteed OCR (scanned PDFs, images) or geospatial raster support with zero local install — `apache/tika:<version>-full` bundles Tesseract, GDAL, ImageMagick, and fonts. Also covers the minimal image, port/volume/memory conventions, the path-identity mount gotcha, and how to confirm OCR actually ran rather than silently returning no text. Powered by Apache Tika. Use when a local `tika-app`/`tika-server` doesn't have Tesseract installed, or you want a disposable, self-contained parsing environment. Companion to the `file-to-markdown` skill, which covers the parsing calls themselves once a server is up.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

apache/tika4.1천2026년 10월 19일 업데이트

Working with tika-metadata-schema, the build-gated registry of Tika metadata keys — regeneration after Property changes, gate tests, naming conventions, post-rename sweeps. Use when adding or renaming metadata keys or when the schema gate fails.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

apache/tika4.1천2026년 10월 19일 업데이트

oss-fuzz

무료

Run Tika's OSS-Fuzz Jazzer targets locally against a working-tree checkout — build the image, build fuzzers from local source, fuzz a target, run a corpus as a regression pass, reproduce a crash, and add seeds. Use for "fuzz the OneNote parser", "run OneNoteParserFuzzer against these files", "reproduce an OSS-Fuzz crash", "fuzz my branch before merge".

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

apache/tika4.1천2026년 10월 19일 업데이트

apache의 스킬 모두 보기

이 스킬의 문제 신고