[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6ACPTH72KSFEP6EBQ3NQTCQ":3,"skill-same:01M6ACPTH72KSFEP6EBQ3NQTCQ":85},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":44,"commitSha":45,"skillDirectory":46,"forksCount":47,"repositoryHtmlUrl":48,"repositoryHomepageUrl":49,"ownerHtmlUrl":50,"ownerBlogUrl":51,"ownerDescription":6,"updatedAt":52,"install":53,"resources":66},"01M6ACPTH72KSFEP6EBQ3NQTCQ","tsfile-cli",null,"Use specifically for the project's C++ `tsfile-cli` in cpp\u002Ftools: inspect, preview, export, or create an Apache TsFile; report metadata or per-series counts; or use its explicit single-table CSV write command.","apache\u002Ftsfile","apache","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F47359?v=4","01M6AC83E6K4FDKK7HZ8WNMQKE","The Apache Software Foundation","01M6ACPQYK1HGZFK8G26M498XN",211,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fapache\u002Ftsfile\u002Fblob\u002Fdevelop\u002Fcpp\u002Ftools\u002Fskills\u002Ftsfile-cli\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,9,36,37,38],"tsfile","tsfile cli","cli","command","single","for","inspect","series","project","c++","preview","export","use","write","Tools","csv","metadata","report","create","cpp","2026-11-10 10:12:30",false,"---\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE file\n# distributed with this work for additional information\n# regarding copyright ownership.  The ASF licenses this file\n# to you under the Apache License, Version 2.0 (the\n# \"License\"); you may not use this file except in compliance\n# with the License.  You may obtain a copy of the License at\n#\n#     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing,\n# software distributed under the License is distributed on an\n# \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n# KIND, either express or implied.  See the License for the\n# specific language governing permissions and limitations\n# under the License.\nname: tsfile-cli\ndescription: >-\n  Use specifically for the project's C++ `tsfile-cli` in cpp\u002Ftools: inspect,\n  preview, export, or create an Apache TsFile; report metadata or per-series\n  counts; or use its explicit single-table CSV write command.\n---\n\n# tsfile-cli\n\nSingle pipe-friendly C++ binary to inspect, read, export, and create `.tsfile`\nfiles. Source `cpp\u002Ftools\u002F`. Result data goes to stdout except `export`,\n`sketch -o`, and `write`; diagnostics go to stderr.\n\nReference files:\n\n- `references\u002Fcommands.md`: command syntax and result fields.\n- `references\u002Ferrors.md`: exit-code and failure-handling rules.\n- `references\u002Fexamples.md`: reviewed command recipes.\n\n## Scope\n\nUse this skill only for the C++ `tsfile-cli` binary. Route Java\n`csv2tsfile`\u002F`parquet2tsfile`\u002F`arrow2tsfile` and table point-count metadata\nchecks or backfill to the top-level `tsfile` skill when it is installed.\n\nThe names overlap but the semantics do not: `tsfile-cli count` is a read-only\nper-series report, not the Java table point-count property tool. `tsfile-cli\nwrite` is the C++ binary's narrow one-file\u002Fstream, one-table CSV import; it\ndoes not replace the Java batch and format-aware import tools.\n\n## Binary\n\n- Name `tsfile-cli` (CMake target `tsfile_cli`). Find: `ls cpp\u002Fbuild\u002F*\u002Fbin\u002Ftsfile-cli`.\n- Build only if missing: `cd cpp && bash build.sh -t=Debug`.\n\n## Read\n\n`tsfile-cli \u003Ccmd> [opts] \u003Cfile.tsfile>` · `tsfile-cli --help | --version | help`\n\n| cmd | output | scans pages |\n|---|---|---|\n| `ls` | `model,object` rows for tree devices or table names | no |\n| `schema` | `model,object,column,category,data_type,encoding,compression` | no |\n| `meta` | `size_bytes,format_version,model` | no |\n| `stats` | FIELD statistics with null counts and source | maybe |\n| `count` | object\u002Fcolumn counts; no summary row | maybe |\n| `head` | first N rows (default 10, `-n`) | yes |\n| `cat` | all matching rows (streamed; `table` format buffers) | yes |\n| `sketch` | physical layout text from the bound `printSketch` behavior | no FIELD decode |\n| `export` | writes one object file or a numbered multi-object directory | yes |\n\nPrefer metadata verbs (`ls\u002Fschema\u002Fmeta\u002Fstats\u002Fcount`) before row verbs so the\nfile model, scope, and columns are known.\n\nFor `head` and `cat`, omit `-d\u002F-t` only when the selected model has exactly one\naccessible object. Multi-object files require explicit scope. `export` always\nrequires explicit scope.\n\n```\nopts: -f table|ndjson|csv  (default table)\n      -d \u003Cdevice> | -t \u003Ctable>   (mutually exclusive)\n      -m \u003Ccolumn> repeat for projection or metadata filtering; no comma lists\n      -n N · --offset N · --start \u003Cint64> · --end \u003Cint64> for head\u002Fcat\u002Fexport\n      --tag-filter C OP [V] where OP=eq|neq|regexp|is-null|not-null\n      --tag-match all|any when two or more tag filters are present\nndjson=one JSON object per line · csv=RFC 4180 with header · INT64\u002FTIMESTAMP as decimal strings\nexit: 0 ok · 1 usage · 2 file open\u002Fcorrupt · 3 query\u002Fruntime\n```\n\n```sh\nB=cpp\u002Fbuild\u002FDebug\u002Fbin\u002Ftsfile-cli\n$B meta data.tsfile; $B count -t table1 -f csv data.tsfile\n$B cat -t table1 --tag-filter device eq dev_1 -m temp -f ndjson data.tsfile\n$B cat -m temp --start 1700000000000 -f csv data.tsfile 2>\u002Fdev\u002Fnull | head\n```\n\n## Write\n\n`tsfile-cli write --table \u003Cname> (--tag \u003Cname> STRING)* (--field \u003Cname> \u003CTYPE>)+ [--encoding \u003CTYPE> \u003CENC>] [--compression \u003CTYPE> \u003CCOMP>] (-i \u003Cinput.csv>|--stdin) -o \u003Cout.tsfile> [-v]`\n\nCreates a new single-table, table-model file from strict CSV. The target must\nnot already exist; the command never creates tree-model TsFiles and never\nmodifies an existing TsFile.\n\n```\nTYPE  ∈ { BOOLEAN, INT32, INT64, FLOAT, DOUBLE, STRING, TEXT, TIMESTAMP, DATE, BLOB }\nENC   ∈ bound TsFile encodings such as PLAIN, TS_2DIFF, GORILLA, DICTIONARY\nCOMP  ∈ UNCOMPRESSED, SNAPPY, GZIP, LZO, LZ4, ZSTD, LZMA2\n```\n\n- CSV must contain a unique header with `time` and exactly the declared TAG\u002FFIELD names; rows are mapped by header name, not physical column order.\n- `--encoding` and `--compression` are keyed by declared data type and apply to all declared columns of that type.\n- `DATE` cells are `YYYY-MM-DD`; `TIMESTAMP` and row `time` use strict decimal int64.\n- **timestamps must be strictly increasing per device** (device = tag-column values); rows for\n  different tags may interleave\u002Freuse timestamps. Out-of-order input → error with line number.\n- A failed import deletes its partial output; success is silent unless `-v` is used.\n- `-v` writes one post-commit summary to stderr: `created model=table object=\u003Ctable> rows=\u003Cn> output=\u003Cpath>` plus one line per column with resolved physical settings.\n- exit: `1` usage\u002Fparameter error · `2` CSV\u002Finput problem · `3` target\u002Fwrite\u002Fcommit failure.\n\n```sh\nprintf 'time,id1,s1\\n0,dev,0\\n1,dev,10\\n' \\\n  | tsfile-cli write --table t1 --tag id1 STRING --field s1 INT64 --stdin -o out.tsfile\ntsfile-cli count -f csv out.tsfile\n```\n\nTree-model \u002F JSON \u002F programmatic writes → C++ SDK `cpp\u002Fexamples\u002Fcpp_examples\u002Fdemo_write.cpp`\n(`TsFileTableWriter`\u002F`TsFileWriter` + `Tablet`); Java\u002FPython writers under `java\u002F`, `python\u002F`.\n\n## Caveats\n\n- `head`\u002F`cat`\u002F`export` decode pages; nonzero exit means any produced stdout or files are not complete results.\n- Table results always include all TAG columns before selected FIELD columns.\n- `sketch` follows the bound TsFile `printSketch` text and does not support `-f`.\n","# tsfile-cli\n\nSingle pipe-friendly C++ binary to inspect, read, export, and create `.tsfile`\nfiles. Source `cpp\u002Ftools\u002F`. Result data goes to stdout except `export`,\n`sketch -o`, and `write`; diagnostics go to stderr.\n\nReference files:\n\n- `references\u002Fcommands.md`: command syntax and result fields.\n- `references\u002Ferrors.md`: exit-code and failure-handling rules.\n- `references\u002Fexamples.md`: reviewed command recipes.\n\n## Scope\n\nUse this skill only for the C++ `tsfile-cli` binary. Route Java\n`csv2tsfile`\u002F`parquet2tsfile`\u002F`arrow2tsfile` and table point-count metadata\nchecks or backfill to the top-level `tsfile` skill when it is installed.\n\nThe names overlap but the semantics do not: `tsfile-cli count` is a read-only\nper-series report, not the Java table point-count property tool. `tsfile-cli\nwrite` is the C++ binary's narrow one-file\u002Fstream, one-table CSV import; it\ndoes not replace the Java batch and format-aware import tools.\n\n## Binary\n\n- Name `tsfile-cli` (CMake target `tsfile_cli`). Find: `ls cpp\u002Fbuild\u002F*\u002Fbin\u002Ftsfile-cli`.\n- Build only if missing: `cd cpp && bash build.sh -t=Debug`.\n\n## Read\n\n`tsfile-cli \u003Ccmd> [opts] \u003Cfile.tsfile>` · `tsfile-cli --help | --version | help`\n\n| cmd | output | scans pages |\n|---|---|---|\n| `ls` | `model,object` rows for tree devices or table names | no |\n| `schema` | `model,object,column,category,data_type,encoding,compression` | no |\n| `meta` | `size_bytes,format_version,model` | no |\n| `stats` | FIELD statistics with null counts and source | maybe |\n| `count` | object\u002Fcolumn counts; no summary row | maybe |\n| `head` | first N rows (default 10, `-n`) | yes |\n| `cat` | all matching rows (streamed; `table` format buffers) | yes |\n| `sketch` | physical layout text from the bound `printSketch` behavior | no FIELD decode |\n| `export` | writes one object file or a numbered multi-object directory | yes |\n\nPrefer metadata verbs (`ls\u002Fschema\u002Fmeta\u002Fstats\u002Fcount`) before row verbs so the\nfile model, scope, and columns are known.\n\nFor `head` and `cat`, omit `-d\u002F-t` only when the selected model has exactly one\naccessible object. Multi-object files require explicit scope. `export` always\nrequires explicit scope.\n\n```\nopts: -f table|ndjson|csv  (default table)\n      -d \u003Cdevice> | -t \u003Ctable>   (mutually exclusive)\n      -m \u003Ccolumn> repeat for projection or metadata filtering; no comma lists\n      -n N · --offset N · --start \u003Cint64> · --end \u003Cint64> for head\u002Fcat\u002Fexport\n      --tag-filter C OP [V] where OP=eq|neq|regexp|is-null|not-null\n      --tag-match all|any when two or more tag filters are present\nndjson=one JSON object per line · csv=RFC 4180 with header · INT64\u002FTIMESTAMP as decimal strings\nexit: 0 ok · 1 usage · 2 file open\u002Fcorrupt · 3 query\u002Fruntime\n```\n\n```sh\nB=cpp\u002Fbuild\u002FDebug\u002Fbin\u002Ftsfile-cli\n$B meta data.tsfile; $B count -t table1 -f csv data.tsfile\n$B cat -t table1 --tag-filter device eq dev_1 -m temp -f ndjson data.tsfile\n$B cat -m temp --start 1700000000000 -f csv data.tsfile 2>\u002Fdev\u002Fnull | head\n```\n\n## Write\n\n`tsfile-cli write --table \u003Cname> (--tag \u003Cname> STRING)* (--field \u003Cname> \u003CTYPE>)+ [--encoding \u003CTYPE> \u003CENC>] [--compression \u003CTYPE> \u003CCOMP>] (-i \u003Cinput.csv>|--stdin) -o \u003Cout.tsfile> [-v]`\n\nCreates a new single-table, table-model file from strict CSV. The target must\nnot already exist; the command never creates tree-model TsFiles and never\nmodifies an existing TsFile.\n\n```\nTYPE  ∈ { BOOLEAN, INT32, INT64, FLOAT, DOUBLE, STRING, TEXT, TIMESTAMP, DATE, BLOB }\nENC   ∈ bound TsFile encodings such as PLAIN, TS_2DIFF, GORILLA, DICTIONARY\nCOMP  ∈ UNCOMPRESSED, SNAPPY, GZIP, LZO, LZ4, ZSTD, LZMA2\n```\n\n- CSV must contain a unique header with `time` and exactly the declared TAG\u002FFIELD names; rows are mapped by header name, not physical column order.\n- `--encoding` and `--compression` are keyed by declared data type and apply to all declared columns of that type.\n- `DATE` cells are `YYYY-MM-DD`; `TIMESTAMP` and row `time` use strict decimal int64.\n- **timestamps must be strictly increasing per device** (device = tag-column values); rows for\n  different tags may interleave\u002Freuse timestamps. Out-of-order input → error with line number.\n- A failed import deletes its partial output; success is silent unless `-v` is used.\n- `-v` writes one post-commit summary to stderr: `created model=table object=\u003Ctable> rows=\u003Cn> output=\u003Cpath>` plus one line per column with resolved physical settings.\n- exit: `1` usage\u002Fparameter error · `2` CSV\u002Finput problem · `3` target\u002Fwrite\u002Fcommit failure.\n\n```sh\nprintf 'time,id1,s1\\n0,dev,0\\n1,dev,10\\n' \\\n  | tsfile-cli write --table t1 --tag id1 STRING --field s1 INT64 --stdin -o out.tsfile\ntsfile-cli count -f csv out.tsfile\n```\n\nTree-model \u002F JSON \u002F programmatic writes → C++ SDK `cpp\u002Fexamples\u002Fcpp_examples\u002Fdemo_write.cpp`\n(`TsFileTableWriter`\u002F`TsFileWriter` + `Tablet`); Java\u002FPython writers under `java\u002F`, `python\u002F`.\n\n## Caveats\n\n- `head`\u002F`cat`\u002F`export` decode pages; nonzero exit means any produced stdout or files are not complete results.\n- Table results always include all TAG columns before selected FIELD columns.\n- `sketch` follows the bound TsFile `printSketch` text and does not support `-f`.\n",{"name":5,"description":7},"develop","f2a71ef2546aae53972d236b6857c5f081a74628","cpp\u002Ftools\u002Fskills\u002Ftsfile-cli",112,"https:\u002F\u002Fgithub.com\u002Fapache\u002Ftsfile","https:\u002F\u002Ftsfile.apache.org\u002F","https:\u002F\u002Fgithub.com\u002Fapache","https:\u002F\u002Fwww.apache.org\u002F","2026-11-11 21:46:55",{"source":8,"skillName":5,"commands":54,"prompt":64,"zipAvailable":65},[55,58,61],{"tool":56,"command":57},"npx","npx skills add apache\u002Ftsfile --skill tsfile-cli",{"tool":59,"command":60},"bunx","bunx skills add apache\u002Ftsfile --skill tsfile-cli",{"tool":62,"command":63},"pnpm","pnpm dlx skills add apache\u002Ftsfile --skill tsfile-cli","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fapache\u002Ftsfile\u002Fblob\u002Fdevelop\u002Fcpp\u002Ftools\u002Fskills\u002Ftsfile-cli\u002FSKILL.md",true,[67,73,77,81],{"path":68,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":71,"sourceHtmlUrl":72},"agents\u002Fopenai.yaml","REFERENCE","参考文档",158,"https:\u002F\u002Fgithub.com\u002Ffmal\u002Fdotfiles\u002Fblob\u002Fmaster\u002F.agents\u002Fskills\u002Fwait-what\u002Fagents\u002Fopenai.yaml",{"path":74,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":75,"sourceHtmlUrl":76},"references\u002Fcommands.md",2648,"https:\u002F\u002Fgithub.com\u002Fapache\u002Ftsfile\u002Fblob\u002Fdevelop\u002Fcpp\u002Ftools\u002Fskills\u002Ftsfile-cli\u002Freferences\u002Fcommands.md",{"path":78,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":79,"sourceHtmlUrl":80},"references\u002Ferrors.md",1740,"https:\u002F\u002Fgithub.com\u002Fapache\u002Ftsfile\u002Fblob\u002Fdevelop\u002Fcpp\u002Ftools\u002Fskills\u002Ftsfile-cli\u002Freferences\u002Ferrors.md",{"path":82,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":83,"sourceHtmlUrl":84},"references\u002Fexamples.md",1663,"https:\u002F\u002Fgithub.com\u002Fapache\u002Ftsfile\u002Fblob\u002Fdevelop\u002Fcpp\u002Ftools\u002Fskills\u002Ftsfile-cli\u002Freferences\u002Fexamples.md",[86,113],{"skillNo":87,"name":19,"nameZh":6,"description":88,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":89,"sourceHtmlUrl":90,"categories":91,"keywords":92,"publishedAt":39},"01M6ACPZP3RGPFEZZJ7E82G90R","Work with the current Apache TsFile SDKs, tools, and file format. Use for Java, Python, C++, or C reads and writes; Python DataFrame and Arrow batches; Java CSV\u002FParquet\u002FArrow import; file properties; TAG filters; query-by-row and metadata APIs; C++ incomplete-writer recovery and append; static\u002Fshared C++ builds; parallel and TsBlock writes; encoding\u002Fcompression factories; schema design; performance; and cross-language integration. Route operations specific to the C++ tsfile-cli binary to the sibling tsfile-cli skill.","https:\u002F\u002Fgithub.com\u002Fapache\u002Ftsfile\u002Fblob\u002Fdevelop\u002Fskills\u002Ftsfile\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fapache\u002Ftsfile\u002Fblob\u002Fdevelop\u002Fskills\u002Ftsfile\u002FSKILL.md",[],[19,93,94,95,96,97,35,98,33,99,100,101,102,103,104,105,106,28,107,108,109,110,9,111,21,112],"filters","java","arrow","parquet","dataframe","file","parallel","work","append","python","schema design","writer","query","route","shared","import","sdks","static","design","performance",{"skillNo":114,"name":5,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":118,"publishedAt":39},"01M6ACPXCAXABWQKAV6GEA8AVY","Use specifically for the project's C++ `tsfile-cli` in cpp\u002Ftools: inspect, preview, export, or create an Apache TsFile; report metadata or per-column counts; or use its explicit single-table CSV write command.","https:\u002F\u002Fgithub.com\u002Fapache\u002Ftsfile\u002Fblob\u002Fdevelop\u002Fskills\u002Ftsfile-cli\u002FSKILL.md",[],[21,19,20,30,38,37,36,9,35,34,33,22,32,31,29,28,27,119,25,24,23],"column"]