어떤 스킬인가요?
Neon의 Postgres를 앱에 연결할 때 사용하는 구성 스킬입니다. 앱의 환경과 연결 방식, 풀링과 관련 도구를 함께 고려해 사용 코드를 정리합니다.
프로젝트와 앱의 실행 환경을 설명해보세요. 연결이 필요한 위치와 방식부터 확인하면 기존 구조에 맞는 설정과 코드를 준비하기 쉽습니다.
neon-postgres · Grok Build
연결 방식, 풀링과 관련 도구를 고려해 Postgres 사용을 돕습니다.
Neon의 Postgres를 앱에 연결할 때 사용하는 구성 스킬입니다. 앱의 환경과 연결 방식, 풀링과 관련 도구를 함께 고려해 사용 코드를 정리합니다.
프로젝트와 앱의 실행 환경을 설명해보세요. 연결이 필요한 위치와 방식부터 확인하면 기존 구조에 맞는 설정과 코드를 준비하기 쉽습니다.
“이 앱을 Neon Postgres에 연결하고 싶어. 실행 환경에 맞는 연결 방식과 풀링을 확인하고 설정 코드를 구성해줘.”
받을 수 있는 결과연결 구성과 사용 코드
Grok Build의 Neon 플러그인과 Neon 프로젝트 접근 권한이 필요합니다.
Grok Build에서 Neon 플러그인과 프로젝트 연결을 먼저 확인하세요. 아래 설치 요청으로 필요한 스킬과 보조 파일을 설치할 수 있는지 점검하세요.
https://github.com/neondatabase/agent-skills 에서 skills/neon-postgres 스킬을 현재 에이전트의 스킬 폴더에 설치해줘. SKILL.md와 이 스킬이 참조하는 scripts·references·assets와 공통 파일을 함께 유지하고, 필요한 실행 환경과 추가 연결을 확인한 뒤 알려줘. 설치가 끝나면 neon-postgres 스킬을 인식하는지 확인해줘.
“neon-postgres 스킬을 사용해줘. 입력 자료: Neon 프로젝트와 앱 환경”처럼 요청하세요. 위의 예시를 내 자료에 맞게 바꿔도 좋아요.
예상 결과는 ‘연결 구성과 사용 코드’입니다. 필요한 내용이 포함됐는지 확인하세요. 입력 자료의 사실·숫자와 결과를 대조하고, 부족한 부분을 이어서 요청하세요.
제작자 원본 2026-10-04 확인 · 설치 안내 2026-10-04 확인 · 실제 설치·실행 미검증
모델 사용 요금과 연결 앱 요금은 이용 중인 서비스의 정책을 따릅니다.
설치 안내 출처--- name: neon-postgres description: >- Guides and best practices for working with Lakebase Postgres on Neon: connections, pooled vs direct, schema migrations, branching, autoscaling, scale-to-zero, instant restore, read replicas, IP allow lists, logical replication, and Lakebase Search. Use when the work is an existing DATABASE_URL, SQL, schema, inspect, or search. New backends, Auth, files, Functions, and LLM calls go to the parent `neon` skill. Also use for "@neondatabase/serverless", "@neondatabase/neon-js", "neon inspect db", "semantic search", "vector search", "full-text search", "BM25", or "hybrid search". metadata: parent: neon source: https://github.com/neondatabase/agent-skills/tree/main/skills/neon-postgres --- **FIRST**: Use the parent `neon` skill for a Neon overview, getting started with Neon, Neon development best practices, and more. If the `neon` skill is not installed, fetch it from https://neon.com/docs/ai/skills/neon/SKILL.md or install it with: ```bash neon skills -s neon -y ```--- name: neon-postgres description: >- Guides and best practices for working with Lakebase Postgres on Neon: connections, pooled vs direct, schema migrations, branching, autoscaling, scale-to-zero, instant restore, read replicas, IP allow lists, logical replication, and Lakebase Search. Use when the work is an existing DATABASE_URL, SQL, schema, inspect, or search. New backends, Auth, files, Functions, and LLM calls go to the parent `neon` skill. Also use for "@neondatabase/serverless", "@neondatabase/neon-js", "neon inspect db", "semantic search", "vector search", "full-text search", "BM25", or "hybrid search". metadata: parent: neon source: https://github.com/neondatabase/agent-skills/tree/main/skills/neon-postgres --- **FIRST**: Use the parent `neon` skill for a Neon overview, getting started with Neon, Neon development best practices, and more. If the `neon` skill is not installed, fetch it from https://neon.com/docs/ai/skills/neon/SKILL.md or install it with: ```bash neon skills -s neon -y ``` # Lakebase Postgres Lakebase Postgres is the database at the core of Neon. It runs on the lakebase architecture — OLTP built directly on cloud object storage — which decouples storage from compute to offer autoscaling, branching, instant restore, and scale-to-zero. It's fully compatible with Postgres and works with any language, framework, or ORM that supports Postgres. It is the same database whether you reach it through Neon or through Databricks; this skill covers the Neon access path. Login, users, sessions, and `@neondatabase/auth` belong in `neon-auth`. ## Setup Flow ### 1. Select the organization and project If a `DATABASE_URL` is already supplied (prompt, environment, or repo) or a `.neon` file points at a project, use it. Do not list organizations or create a second project for schema work. Otherwise use the CLI (default) or MCP server to list organizations and projects. Let the user select an existing project or create a new one. ### 2. Get the connection string If a `DATABASE_URL` is already supplied, use it. Do not fetch another through the CLI or MCP. Otherwise use the CLI (default), `neon env pull`, or the MCP server to get the connection string. Store it in `.env` as `DATABASE_URL`. Read the file first before modifying it, to avoid overwriting existing values. #### When to use pooled vs direct connections | Use case | Connection type | | ---------------------------------------- | ---------------- | | Web applications, serverless functions | Pooled (-pooler) | | Schema migrations | Direct | | pg_dump / pg_restore | Direct | | Logical replication | Direct | | Long-running analytics with temp tables | Direct | | Admin tasks needing SET or session state | Direct | | LISTEN / NOTIFY | Direct | ### 3. Pick the connection method and driver Preserve the existing ORM and driver. For new TypeScript schema work with no established choice, Drizzle is a suggestion: https://neon.com/docs/guides/drizzle.md. Refer to the connection methods guide to pick the correct driver based on how the runtime treats your code: https://neon.com/docs/connect/choose-connection.md. Driver notes: - On Vercel, use `node-postgres` (`npm install pg`) with Vercel Fluid compute and `import { attachDatabasePool } from "@vercel/functions";` - On Cloudflare, use `node-postgres` with Cloudflare Hyperdrive - On Neon Functions, use `node-postgres`, as the functions are long-running and reuse the pool across requests. - Use the `@neondatabase/serverless` driver for serverless and edge environments (for example, when using Netlify) — HTTP transport for one-shot queries, WebSocket for transaction support. Link: https://neon.com/docs/serverless/serverless-driver.md ### 4. Set up the schema Manage schemas and migrations as code. Avoid running ad hoc schema migrations against your database, since they're hard to manage. If you're using an ORM, follow your ORM's best practices to manage schemas and migrations. For example, if using Drizzle, only use Drizzle for schema and migration management unless instructed otherwise. ## Branching Use this when the user is planning isolated environments, schema migration testing, preview deployments, or branch lifecycle automation. Key points: - Branches are instant, copy-on-write clones (no full data copy). - Each branch has its own compute endpoint. - Use the neon CLI or MCP server to create, inspect, and compare branches. Link: https://neon.com/docs/introduction/branching.md For detailed branch creation workflows (normal vs schema-only branches, reset-from-parent, CLI/MCP selection), use the `neon-postgres-branches` skill. If it isn't installed, fetch it from https://neon.com/docs/ai/skills/neon-postgres-branches/SKILL.md or install it with: ```bash neon skills -s neon-postgres-branches -y ``` ## Migrations Test a migration on a branch of production, against production-like data, before applying it to production. Use a **direct (non-pooled)** connection string when you run the migration, not a pooled one. `neon connection-string` returns the direct string by default; make sure the hostname does not include the `-pooler` suffix. ## Troubleshooting and Neon-Specific Performance Use Neon's predefined, read-only diagnostics before writing catalog queries by hand. The Neon CLI `neon inspect db` subcommands and the Neon MCP server's `inspect_database` tool run the same checks. This section covers Neon-specific diagnostic tools, compute cache behavior, and platform signals. When the evidence points to generic Postgres work such as rewriting a query, choosing an index, changing a schema, or interpreting plan nodes, load the [`postgres-best-practices`](https://github.com/neondatabase/postgres-skills/tree/main/skills/postgres-best-practices) skill and carry the diagnostic evidence into that workflow. Docs: - CLI: https://neon.com/docs/cli/inspect.md - Query performance: https://neon.com/docs/postgresql/query-performance.md - `pg_stat_statements`: https://neon.com/docs/extensions/pg_stat_statements.md - Neon Local File Cache: https://neon.com/docs/extensions/neon.md ### Choose CLI or MCP Prefer the Neon CLI when terminal access and authentication are available: ```bash neon inspect db <check> ``` The CLI resolves the project and branch from the current Neon context. Use `--project-id`, `--branch`, and `--database-name` to override it. Omit `--database-name` to inspect every database on the branch. Use `--db-url` only when inspecting a Postgres database directly instead of resolving it through the Neon API. When using Neon MCP, call `inspect_database` with `projectId` and one `check`. Pass `branchId`, `databaseName`, or `computeId` only when needed. Omit `databaseName` to inspect all databases on the branch. Increase `limit` only when the result says it was truncated. ### Pick the Diagnostic | Symptom or question | Checks | | ---------------------------------------------- | ------------------------------------ | | Which relations consume storage? | `table-sizes`, `index-sizes` | | Is an index unused or a table scanned heavily? | `unused-indexes`, `seq-scans` | | What has run for 5+ minutes or holds locks? | `long-running-queries`, `locks` | | Which queries consume the most total time? | `outliers` | | Which queries run most often? | `calls` | | Does the active data fit in compute cache? | `lfc-hit-rate`, `working-set` | | Is autovacuum behind or is space wasted? | `vacuum-stats`, `bloat` | | Is logical replication healthy? | `replication-slots`, `subscriptions` | Do not confuse these checks: - `long-running-queries` reports statements running **right now** for more than five minutes. - `outliers` ranks the top queries by cumulative execution time since statistics were reset. It does not rank by mean latency. - `calls` ranks by execution count over the same statistics history. `outliers` and `calls` require `pg_stat_statements`. `lfc-hit-rate` and `working-set` require the `neon` extension. If a check reports a missing extension, ask before running the suggested `CREATE EXTENSION` statement because installing an extension modifies the database. ### Interpret Results Safely - Treat `unused-indexes` as a candidate list, not permission to drop indexes. Confirm the observation window, constraints, and workload before removal. - A sequential scan can be correct for a small table or a query reading much of a table. Check table size, selectivity, and the query plan before adding an index. - `bloat` is a statistical estimate. Confirm the impact and plan locks or maintenance before `VACUUM FULL`, `REINDEX`, or similar remediation. - Cache and Postgres statistics reset when compute restarts, including scale-to-zero suspension. Run a representative workload before interpreting fresh `lfc-hit-rate`, `working-set`, `vacuum-stats`, or `pg_stat_statements` results. - Compute-wide checks (`lfc-hit-rate`, `working-set`, and `replication-slots`) run once even when inspecting every database. - One failing database can fail an all-databases inspection; retry the relevant check with an explicit `databaseName` to isolate it. ### Inspect Neon Cache Behavior Per Query Standard `EXPLAIN (ANALYZE, BUFFERS)` reports Postgres shared-buffer activity, but it does not show Neon's Local File Cache (LFC) or page prefetching. For a safe read-only query, add Neon's `FILECACHE` and `PREFETCH` options: ```sql EXPLAIN (ANALYZE, BUFFERS, PREFETCH, FILECACHE) SELECT ...; ``` - `File cache: hits` counts pages found in the compute's LFC. - `File cache: misses` counts pages not found in the LFC and fetched from database storage. - `Prefetch: hits`, `misses`, `expired`, and `duplicates` show how effectively Neon fetched pages before the executor requested them. `FILECACHE` and `PREFETCH` provide metrics for this query and do not require the `neon` extension. By contrast, `neon inspect db lfc-hit-rate` and `working-set` provide compute-wide statistics and do require the extension. The MCP `explain_sql_statement` tool can produce a standard plan but does not expose `FILECACHE` or `PREFETCH` options. To collect those Neon-specific metrics through MCP, use `run_sql` with the explicit, read-only `EXPLAIN` statement above. Because `ANALYZE` executes the statement, use it only when execution is safe; do not run it autonomously for mutating SQL. Compare cold- and warm-cache runs carefully because the first execution can populate the cache and materially change later results. ### Performance Workflow 1. Reproduce the symptom and note its time window. 2. Run the smallest relevant `inspect` checks from the table above. 3. Identify a specific query before changing schema or compute. Use MCP `explain_sql_statement` for a standard plan, or the Neon-specific `EXPLAIN` above when LFC or prefetch behavior matters. 4. If the bottleneck is query shape, indexing, schema, locking, or vacuum behavior, load `postgres-best-practices` and carry forward the inspection results and query plan. Keep Neon compute, cache, connection, and platform decisions in this skill. 5. Re-run the same check and workload to verify the change. Use MCP `list_slow_queries` instead of `inspect_database` when the user specifically needs queries ranked by average execution time with a custom threshold and limit. Outside the explicit `EXPLAIN` case above, use `run_sql` only for read-only diagnostic SQL when the predefined checks do not answer the question. ## Autoscaling Use this when the user needs compute to scale automatically with workload and wants guidance on CU sizing and runtime behavior. Link: https://neon.com/docs/introduction/autoscaling.md ## Scale to Zero Use this when optimizing idle costs and discussing suspend/resume behavior, including cold-start trade-offs. Key points: - Idle computes suspend automatically after a default of 5 minutes; the timeout is configurable, and suspension can only be disabled on the Launch and Scale plans. - First query after suspend typically has a cold-start penalty (around hundreds of ms) - Storage remains active while compute is suspended. Link: https://neon.com/docs/introduction/scale-to-zero.md ## Instant Restore Use this when the user needs point-in-time recovery or wants to restore data state without traditional backup restore workflows. Key points: - History windows for instant restore depend on plan limits. - Users can create branches from historical points-in-time. - Time Travel queries can be used for historical inspection workflows. Link: https://neon.com/docs/introduction/branch-restore.md ## Read Replicas Use this for read-heavy workloads where the user needs dedicated read-only compute without duplicating storage. Key points: - Replicas are read-only compute endpoints sharing the same storage. - Creation is fast and scaling is independent from primary compute. - Typical use cases: analytics, reporting, and read-heavy APIs. Link: https://neon.com/docs/introduction/read-replicas.md ## Connection Pooling Use this when the user is in serverless or high-concurrency environments and needs safe, scalable Postgres connection management. Key points: - Neon pooling uses PgBouncer. - Add `-pooler` to endpoint hostnames to use pooled connections. - Pooling is especially important in serverless runtimes with bursty concurrency. Link: https://neon.com/docs/connect/connection-pooling.md ## IP Allow Lists Use this when the user needs to restrict database access by trusted networks, IPs, or CIDR ranges. Link: https://neon.com/docs/introduction/ip-allow.md ## Logical Replication Use this when integrating CDC pipelines, external Postgres sync, or replication-based data movement. Key points: - Neon supports native logical replication workflows. - Useful for replicating to/from external Postgres systems. Link: https://neon.com/docs/guides/logical-replication-guide.md ## Lakebase Search Use Lakebase Search for semantic, full-text, and hybrid search: - For semantic search, read [Vector search](references/vector-search.md). - For full-text search with BM25 ranking, read [Full-text search](references/full-text-search.md). - For combining semantic and lexical results, read [Hybrid search](references/hybrid-search.md). - For managing any of the above through Drizzle ORM, read [Managing Lakebase Search with Drizzle](references/lakebase-search-drizzle.md). Links: - [Get started with Lakebase Search](https://neon.com/docs/ai/lakebase-search-get-started) - [`lakebase_vector` reference](https://neon.com/docs/extensions/lakebase-vector) - [`lakebase_text` reference](https://neon.com/docs/extensions/lakebase-text) ## Gotchas ### Pooled vs direct connections: use the direct URL for migrations, dumps, and replication Neon gives you two connection strings for the same database: a **pooled** one (hostname with the `-pooler` suffix) and a **direct/unpooled** one (no `-pooler` suffix). `neon env pull` writes them as `DATABASE_URL` and `DATABASE_URL_UNPOOLED`. The pooled connection routes through PgBouncer in transaction mode, which doesn't support session-level operations. Choose the right one: - **Pooled (`DATABASE_URL`)** — your application's normal query traffic, especially serverless and connection-per-request workloads. - **Direct (`DATABASE_URL_UNPOOLED`)** — schema migrations (Prisma Migrate, Drizzle Kit, Alembic, and others), `pg_dump` / `pg_restore`, logical replication, `LISTEN`/`NOTIFY`, and anything relying on `SET` or other session state. Running migrations, dumps, or replication over the pooled connection can fail, and never in a way that names pooling: `prepared statement "s0" already exists` from Prisma Migrate, a `SET search_path` that doesn't persist past its own transaction so the next query reports `relation "mytable" does not exist`, or a write intermittently hitting a read-only transaction (`SQLSTATE 25006`) that a pooled backend inherited from an earlier client. Migration tools generally take both strings at once — Prisma's `directUrl` alongside `url` — so point that at the direct one rather than swapping `DATABASE_URL` and losing pooling for the application. See https://neon.com/docs/connect/connection-pooling.md.
Original skill: neondatabase/agent-skills/skills/neon-postgres/SKILL.md
Source: https://github.com/neondatabase/agent-skills/blob/ae082b22275461fbb5e303a1bcdc9bb00b73a946/skills/neon-postgres/SKILL.md
License: Apache-2.0
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed 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.
SKILL.md 본문입니다. 원문에서 참조하는 스크립트·보조 파일은 원본 패키지에 포함되어 있습니다.