{"id":49321322,"url":"https://github.com/kuniwak/pfd-tools","last_synced_at":"2026-04-26T18:01:30.516Z","repository":{"id":326598885,"uuid":"1100415004","full_name":"Kuniwak/pfd-tools","owner":"Kuniwak","description":"Tools related to Process Flow Diagram (PFD) such as static analyzers and schedulers","archived":false,"fork":false,"pushed_at":"2026-01-10T01:33:26.000Z","size":1205,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-01-17T14:13:04.268Z","etag":null,"topics":["pfd","project-management"],"latest_commit_sha":null,"homepage":"https://kuniwak.github.io/pfd-tools/","language":"Go","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Kuniwak.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-20T08:51:21.000Z","updated_at":"2026-01-10T01:33:09.000Z","dependencies_parsed_at":"2025-12-02T12:00:22.233Z","dependency_job_id":null,"html_url":"https://github.com/Kuniwak/pfd-tools","commit_stats":null,"previous_names":["kuniwak/pfd-tools"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/Kuniwak/pfd-tools","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kuniwak%2Fpfd-tools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kuniwak%2Fpfd-tools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kuniwak%2Fpfd-tools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kuniwak%2Fpfd-tools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Kuniwak","download_url":"https://codeload.github.com/Kuniwak/pfd-tools/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kuniwak%2Fpfd-tools/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32307015,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T17:23:19.671Z","status":"ssl_error","status_checked_at":"2026-04-26T17:23:19.195Z","response_time":129,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["pfd","project-management"],"created_at":"2026-04-26T18:01:29.750Z","updated_at":"2026-04-26T18:01:30.507Z","avatar_url":"https://github.com/Kuniwak.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"pfd-tools\n=========\n\n[![DeepWiki](https://img.shields.io/badge/DeepWiki-Kuniwak%2Fpfd--tools-blue.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAyCAYAAAAnWDnqAAAAAXNSR0IArs4c6QAAA05JREFUaEPtmUtyEzEQhtWTQyQLHNak2AB7ZnyXZMEjXMGeK/AIi+QuHrMnbChYY7MIh8g01fJoopFb0uhhEqqcbWTp06/uv1saEDv4O3n3dV60RfP947Mm9/SQc0ICFQgzfc4CYZoTPAswgSJCCUJUnAAoRHOAUOcATwbmVLWdGoH//PB8mnKqScAhsD0kYP3j/Yt5LPQe2KvcXmGvRHcDnpxfL2zOYJ1mFwrryWTz0advv1Ut4CJgf5uhDuDj5eUcAUoahrdY/56ebRWeraTjMt/00Sh3UDtjgHtQNHwcRGOC98BJEAEymycmYcWwOprTgcB6VZ5JK5TAJ+fXGLBm3FDAmn6oPPjR4rKCAoJCal2eAiQp2x0vxTPB3ALO2CRkwmDy5WohzBDwSEFKRwPbknEggCPB/imwrycgxX2NzoMCHhPkDwqYMr9tRcP5qNrMZHkVnOjRMWwLCcr8ohBVb1OMjxLwGCvjTikrsBOiA6fNyCrm8V1rP93iVPpwaE+gO0SsWmPiXB+jikdf6SizrT5qKasx5j8ABbHpFTx+vFXp9EnYQmLx02h1QTTrl6eDqxLnGjporxl3NL3agEvXdT0WmEost648sQOYAeJS9Q7bfUVoMGnjo4AZdUMQku50McDcMWcBPvr0SzbTAFDfvJqwLzgxwATnCgnp4wDl6Aa+Ax283gghmj+vj7feE2KBBRMW3FzOpLOADl0Isb5587h/U4gGvkt5v60Z1VLG8BhYjbzRwyQZemwAd6cCR5/XFWLYZRIMpX39AR0tjaGGiGzLVyhse5C9RKC6ai42ppWPKiBagOvaYk8lO7DajerabOZP46Lby5wKjw1HCRx7p9sVMOWGzb/vA1hwiWc6jm3MvQDTogQkiqIhJV0nBQBTU+3okKCFDy9WwferkHjtxib7t3xIUQtHxnIwtx4mpg26/HfwVNVDb4oI9RHmx5WGelRVlrtiw43zboCLaxv46AZeB3IlTkwouebTr1y2NjSpHz68WNFjHvupy3q8TFn3Hos2IAk4Ju5dCo8B3wP7VPr/FGaKiG+T+v+TQqIrOqMTL1VdWV1DdmcbO8KXBz6esmYWYKPwDL5b5FA1a0hwapHiom0r/cKaoqr+27/XcrS5UwSMbQAAAABJRU5ErkJggg==)](https://deepwiki.com/Kuniwak/pfd-tools)\n\nTools related to Process Flow Diagram (PFD) such as static analyzers and schedulers.\n\n**:bee: This repository is not accepting pull requests.**\n\n\nInstallation\n------------\nDownload the latest binary from [Releases](https://github.com/Kuniwak/pfd-tools/releases) and place it in a directory that is in your PATH.\n\n\npfdlint\n-------\nDetects problems in PFD notation.\n\n### Usage\n```console\n$ pfdlint -h\nUsage: pfdlint [options] -p \u003cpfd\u003e [-a \u003catomic-process-table\u003e] [-d \u003cdeliverable-table\u003e] [-c \u003ccomposite-process-table\u003e] [-r \u003cresource-table\u003e]\n\nOptions\n  -ap string\n    \tpath to the atomic process fsmtable\n  -at string\n    \tpath to the atomic deliverable fsmtable\n  -atomic-deliverable string\n    \tpath to the atomic deliverable fsmtable\n  -atomic-process string\n    \tpath to the atomic process fsmtable\n  -cd string\n    \tpath to the composite deliverable fsmtable\n  -composite-deliverable string\n    \tpath to the composite deliverable fsmtable\n  -composite-process string\n    \tpath to the composite process fsmtable\n  -config string\n    \tpath to the run config file\n  -cp string\n    \tpath to the composite process fsmtable\n  -debug\n    \tdebug mode\n  -f string\n    \tpath to the run config file\n  -format string\n    \tformat of the fsmreporter (default \"tsv\")\n  -g string\n    \tpath to the group table\n  -group string\n    \tpath to the group table\n  -locale string\n    \tlocale of the fsmreporter (default \"ja\")\n  -m string\n    \tpath to the milestone table\n  -milestone string\n    \tpath to the milestone table\n  -p string\n    \tpath to the PFD\n  -pfd string\n    \tpath to the PFD\n  -r string\n    \tpath to the resource fsmtable\n  -resource string\n    \tpath to the resource fsmtable\n  -silent\n    \tsilent mode\n  -v\tshow version\n  -version\n    \tshow version\n\nExample\n  $ pfdlint -p ./pfd/encoding/drawio/testdata/example.drawio\n  WARNING no-desc Please add a concise description.  [D2]\n  ERROR   single-src      A deliverable is being output from multiple processes. A deliverable should be output from only one process.   [D3]\n\n  $ pfdlint -locale en -p ./pfd/encoding/drawio/testdata/example.drawio\n  WARNING no-desc Please add a concise description.       [D3]\n  ERROR   single-src      A deliverable should be output from only one process. This includes output through feedback edges.      [D2]\n\n  $ # Using config file instead of individual table specifications\n  $ pfdlint -f ./config.json\n  WARNING no-desc Please add a concise description.  [D2]\n  ERROR   single-src      A deliverable is being output from multiple processes. A deliverable should be output from only one process.   [D3]\n```\n\n\npfdtable\n--------\nCreates element tables from PFD. Updating element tables is also possible.\n\n### Usage\n```console\nUsage: pfdtable [options]\n\nOptions\n  -ap string\n    \tpath to the atomic process fsmtable\n  -atomic-process string\n    \tpath to the atomic process fsmtable\n  -cd string\n    \tpath to the composite deliverable fsmtable\n  -composite-deliverable string\n    \tpath to the composite deliverable fsmtable\n  -debug\n    \tdebug mode\n  -existing string\n    \tpath of the existing fsmtable\n  -i string\n    \tformat of the input PFD\n  -inplace\n    \toverwrite the file in place\n  -input-format string\n    \tformat of the input PFD\n  -locale string\n    \tlocale of the fsmreporter (default \"ja\")\n  -o string\n    \tformat of the output fsmtable\n  -output-format string\n    \tformat of the output fsmtable\n  -p string\n    \tpath to the PFD\n  -pfd string\n    \tpath to the PFD\n  -silent\n    \tsilent mode\n  -t string\n    \ttype of the table (available: ap(atomic-process), ad(atomic-deliverable), cp(composite-process), cd(composite-deliverable), r(resource))\n  -type string\n    \ttype of the table (available: ap(atomic-process), ad(atomic-deliverable), cp(composite-process), cd(composite-deliverable), r(resource))\n  -v\tshow version\n  -version\n    \tshow version\n\nExample\n  $ pfdtable -t ad -p path/to/pfd.drawio\n  ID      Description     Location\n  D1      Implementation  https://example.com/1\n  ...\n\n  $ pfdtable -t ap -p path/to/pfd.drawio\n  ID      Description\n  P1      Implement\n  ...\n\n  $ pfdtable -t cp -p path/to/pfd.drawio\n  ID      Description\n  P1      Implement\n  ...\n\n  $ # Copy to clipboard as RTF (it is useful for pasting into Confluence and Microsoft Word and so on)\n  $ pfdtable -t ad -o html path/to/pfd.drawio | textutil -stdin -format html -convert rtf -inputencoding UTF-8 -stdout | pbcopy\n\n  $ # Print updated fsmtable from the existing fsmtable\n  $ pfdtable -t ad -existing path/to/existing.tsv -p path/to/pfd.drawio\n  ID      Description     Location\n  D1      Implementation  https://example.com/1\n  ...\n```\n\n\npfdrenum\n--------\nNumbers PFD elements. Existing IDs are maintained.\n\n### Usage\n```console\n$ pfdrenum -h\nUsage: pfdrenum [options]\n\nOptions\n  -debug\n    \tdebug mode\n  -inplace\n    \toverwrite the file in place\n  -locale string\n    \tlocale of the fsmreporter (default \"ja\")\n  -silent\n    \tsilent mode\n  -v\tshow version\n  -version\n    \tshow version\n\nExample\n  $ pfdrenum path/to/pfd.drawio\n  \u003cmxfile host=\"65bd71144e\"\u003e\n    \u003cdiagram id=\"1ni4HEU6g7zc3-6eLzPC\" name=\"P0\"\u003e\n    ...\n\n  $ pfdrenum -inplace path/to/pfd.drawio\n```\n\n\npfdplan\n-------\nSearches for optimal execution plans (Gantt charts) from PFD and environment.\n\n### Usage\n```console\n$ pfdplan -h\nUsage: pfdplan [-debug|-silent] -p \u003cpfd\u003e -a \u003catomic-process-table\u003e -r \u003cresource-table\u003e -d \u003cdeliverable-table\u003e [-start-time \u003cstart-time\u003e -duration \u003cduration\u003e [-weekdays \u003cweekdays\u003e] [-not-biz-days \u003cnot-biz-days\u003e]|-o plan-json|timeline-json|google-spreadsheet-tsv]\n\nOptions\n  -ap string\n    \tpath to the atomic process fsmtable\n  -at string\n    \tpath to the atomic deliverable fsmtable\n  -atomic-deliverable string\n    \tpath to the atomic deliverable fsmtable\n  -atomic-process string\n    \tpath to the atomic process fsmtable\n  -best\n    \tsearch best plan\n  -better\n    \tsearch better plan\n  -cd string\n    \tpath to the composite deliverable fsmtable\n  -composite-deliverable string\n    \tpath to the composite deliverable fsmtable\n  -config string\n    \tpath to the run config file\n  -debug\n    \tdebug mode\n  -duration float\n    \tduration (default 9)\n  -f string\n    \tpath to the run config file\n  -g string\n    \tpath to the group table\n  -group string\n    \tpath to the group table\n  -locale string\n    \tlocale of the fsmreporter (default \"ja\")\n  -m string\n    \tpath to the milestone table\n  -max-results int\n    \tupper bound of the number of results to return \u003e= 1 (default 3)\n  -maximal-available-allocations-threshold int\n    \tuse only maximal available allocations if number of newly allocatable atomic processes is greater than the threshold. do not use maximal available allocations if threshold is not positive (default 10)\n  -milestone string\n    \tpath to the milestone table\n  -node-budget int\n    \tupper bound of the number of nodes to expand \u003e= 1 (default 10000)\n  -not-biz-days string\n    \tnot business days except weekdays (comma separated dates. e.g. 2025-01-01,2025-01-02)\n  -out-dir string\n    \toutput directory\n  -out-format string\n    \toutput format (available: google-spreadsheet-tsv, plan-json, timeline-json)\n  -p string\n    \tpath to the PFD\n  -pfd string\n    \tpath to the PFD\n  -poor\n    \tsearch plan by greedy algorithm (faster than best and better)\n  -quality string\n    \tquality preset (available: s, m, l, xl, xxl) (default \"small\")\n  -r string\n    \tpath to the resource fsmtable\n  -random-seed int\n    \trandom seed (default 922990587439306466)\n  -resource string\n    \tpath to the resource fsmtable\n  -restarts int\n    \tnumber \u003e= 0 of restarts for diversity\n  -silent\n    \tsilent mode\n  -start string\n    \tstart day\n  -start-time string\n    \tstart time (default \"10:00\")\n  -top-k-per-state int\n    \tupper bound of the number of transitions to consider per state \u003e= 1 (default 128)\n  -v\tshow version\n  -version\n    \tshow version\n  -weekdays string\n    \tcomma separated weekdays (available: sun,mon,tue,wed,thu,fri,sat) (default \"mon,tue,wed,thu,fri\")\n  -weight float\n    \tweight \u003e= 1.0 of Weighted A*. closer to 1.0 means closer to A*, greater than 1.0 means closer to greedy (default 2)\n\nExample\n    $ pfdplan -p path/to/pfd.drawio -a path/to/atomic_proc.tsv -d path/to/deliv.tsv -r path/to/resource.tsv -start-time 10:00 -duration 9 -not-biz-days \u003c(holidays -locale ja)\n    AtomicProcess[NumOfComplete]     StartTime       EndTime\n    P1[1]   2025-10-04T00:00:00+09:00       2025-10-11T04:30:00+09:00\n    P1[2]   2025-10-04T04:30:00+09:00       2025-10-11T06:45:00+09:00\n    P1[3]   2025-10-04T06:45:00+09:00       2025-10-11T06:45:00+09:00\n\t...\n```\n\n\npfddiff\n-------\nCompares two PFDs.\n\n### Usage\n```console\n$ pfddiff -h\nUsage: pfddiff [options] -p1 \u003cpfd-a\u003e -cd1 \u003ccomposite-deliverable-table-a\u003e -p2 \u003cpfd-b\u003e -cd2 \u003ccomposite-deliverable-table-b\u003e\n\nOptions\n  -cd1 string\n    \tpath to the composite deliverable fsmtable for PFD A\n  -cd2 string\n    \tpath to the composite deliverable fsmtable for PFD B\n  -composite-deliverable1 string\n    \tpath to the composite deliverable fsmtable for PFD A\n  -composite-deliverable2 string\n    \tpath to the composite deliverable fsmtable for PFD B\n  -debug\n    \tdebug mode\n  -format string\n    \tformat of the output (default \"diff\")\n  -locale string\n    \tlocale of the fsmreporter (default \"ja\")\n  -p1 string\n    \tpath to PFD A\n  -p2 string\n    \tpath to PFD B\n  -pfd1 string\n    \tpath to PFD A\n  -pfd2 string\n    \tpath to PFD B\n  -prompt\n    \tAI-friendly output format\n  -show-same\n    \tshow same nodes and edges\n  -silent\n    \tsilent mode\n  -v\tshow version\n  -version\n    \tshow version\n\nExample\n  $ pfddiff -p1 path/to/a.drawio -cd1 path/to/a_composite_deliv.tsv -p2 path/to/b.drawio -cd2 path/to/b_composite_deliv.tsv\n  + P1 ----\u003e D1\n  - P2 ----\u003e D2\n\n  $ pfddiff -prompt -p1 path/to/a.drawio -cd1 path/to/a_composite_deliv.tsv -p2 path/to/b.drawio -cd2 path/to/b_composite_deliv.tsv\n```\n\n\npfdquery\n--------\nQueries information about PFD elements.\n\n### Usage\n```console\n$ pfdquery -h\nUsage: pfdquery [options] -p \u003cpfd\u003e [-a \u003catomic-process-table\u003e] [-d \u003cdeliverable-table\u003e] [-r \u003cresource-table\u003e]\n\nOptions\n  -ap string\n    \tpath to the atomic process fsmtable\n  -at string\n    \tpath to the atomic deliverable fsmtable\n  -atomic-deliverable string\n    \tpath to the atomic deliverable fsmtable\n  -atomic-process string\n    \tpath to the atomic process fsmtable\n  -backward-reachable\n    \tbackward reachable\n  -backward-reachable-fb\n    \tbackward reachable feedback destination\n  -cd string\n    \tpath to the composite deliverable fsmtable\n  -composite-deliverable string\n    \tpath to the composite deliverable fsmtable\n  -composite-process string\n    \tpath to the composite process fsmtable\n  -config string\n    \tpath to the run config file\n  -cp string\n    \tpath to the composite process fsmtable\n  -debug\n    \tdebug mode\n  -f string\n    \tpath to the run config file\n  -g string\n    \tpath to the group table\n  -group string\n    \tpath to the group table\n  -locale string\n    \tlocale of the fsmreporter (default \"ja\")\n  -m string\n    \tpath to the milestone table\n  -maximal-available-allocations-threshold int\n    \tuse only maximal available allocations if number of newly allocatable atomic processes is greater than the threshold. do not use maximal available allocations if threshold is not positive (default 10)\n  -milestone string\n    \tpath to the milestone table\n  -p string\n    \tpath to the PFD\n  -pfd string\n    \tpath to the PFD\n  -r string\n    \tpath to the resource fsmtable\n  -reachable\n    \treachable\n  -resource string\n    \tpath to the resource fsmtable\n  -silent\n    \tsilent mode\n  -v\tshow version\n  -version\n    \tshow version\n\nExample\n  $ pfdquery -p path/to/pfd.drawio -reachable\n  $ pfdquery -p path/to/pfd.drawio -backward-reachable\n```\n\n\nbizday\n------\nCalculates which business day a specified time corresponds to within business hours.\n\n### Usage\n```console\n$ bizday -h\nUsage: bizday [-start \u003cstart-day\u003e] [-start-time \u003cstart-time\u003e] [-duration \u003cduration\u003e] [-weekdays \u003cweekdays\u003e] [-not-biz-days \u003cnot-biz-days\u003e] -time \u003ctime\u003e\n\nOptions\n  -debug\n    \tdebug mode\n  -duration float\n    \tduration (default 9)\n  -locale string\n    \tlocale of the fsmreporter (default \"ja\")\n  -not-biz-days string\n    \tnot business days except weekdays (comma separated dates. e.g. 2025-01-01,2025-01-02)\n  -silent\n    \tsilent mode\n  -start string\n    \tstart day\n  -start-time string\n    \tstart time (default \"10:00\")\n  -t string\n    \ttime\n  -time string\n    \ttime\n  -v\tshow version\n  -version\n    \tshow version\n  -weekdays string\n    \tcomma separated weekdays (available: sun,mon,tue,wed,thu,fri,sat) (default \"mon,tue,wed,thu,fri\")\n\nExample\n  $ bizday -time '2016-01-02 15:00'\n  1234\n\n  $ bizday -start 2025-01-01 -start-time 10:00 -duration 9 -not-biz-days \u003c(holidays -locale ja) -weekdays mon,tue,wed,thu,fri -time '2025-01-01 10:00'\n  1234\n```\n\n\nplanmaster\n----------\nCreates group-specific master schedules from execution plans and milestone/group information.\n\n### Usage\n```console\n$ planmaster -h\nUsage: planmaster [options] -f \u003cproject\u003e \u003cplan\u003e\n\nOptions\n  -ap string\n    \tpath to the atomic process fsmtable\n  -atomic-process string\n    \tpath to the atomic process fsmtable\n  -b float\n    \tbuffer multiplier (default 1)\n  -buffer float\n    \tbuffer multiplier (default 1)\n  -config string\n    \tpath to the run config file\n  -debug\n    \tdebug mode\n  -f string\n    \tpath to the run config file\n  -g string\n    \tpath to the group table\n  -group string\n    \tpath to the group table\n  -locale string\n    \tlocale of the fsmreporter (default \"ja\")\n  -m string\n    \tpath to the milestone table\n  -milestone string\n    \tpath to the milestone table\n  -out-format string\n    \toutput format (available: google-spreadsheet-tsv, plan-json, timeline-json)\n  -p string\n    \tpath to the plan\n  -plan string\n    \tpath to the plan\n  -silent\n    \tsilent mode\n  -v\tshow version\n  -version\n    \tshow version\n\nExample\n  $ planmaster -f path/to/config.json -m path/to/milestone.tsv -g path/to/group.tsv path/to/plan.json\n```\n\n\nplantimeline\n------------\nGenerates timeline data in specified format (such as Google Sheets Timeline) from execution plan JSON files.\n\n### Usage\n```console\n$ plantimeline -h\nUsage: plantimeline [options] -f \u003cproject\u003e \u003cplan\u003e\n\nOptions\n  -ap string\n    \tpath to the atomic process fsmtable\n  -at string\n    \tpath to the atomic deliverable fsmtable\n  -atomic-deliverable string\n    \tpath to the atomic deliverable fsmtable\n  -atomic-process string\n    \tpath to the atomic process fsmtable\n  -cd string\n    \tpath to the composite deliverable fsmtable\n  -composite-deliverable string\n    \tpath to the composite deliverable fsmtable\n  -config string\n    \tpath to the run config file\n  -debug\n    \tdebug mode\n  -duration float\n    \tduration (default 9)\n  -f string\n    \tpath to the run config file\n  -locale string\n    \tlocale of the fsmreporter (default \"ja\")\n  -maximal-available-allocations-threshold int\n    \tuse only maximal available allocations if number of newly allocatable atomic processes is greater than the threshold. do not use maximal available allocations if threshold is not positive (default 10)\n  -not-biz-days string\n    \tnot business days except weekdays (comma separated dates. e.g. 2025-01-01,2025-01-02)\n  -out-format string\n    \toutput format (available: google-spreadsheet-tsv, plan-json, timeline-json)\n  -p string\n    \tpath to the PFD\n  -pfd string\n    \tpath to the PFD\n  -r string\n    \tpath to the resource fsmtable\n  -resource string\n    \tpath to the resource fsmtable\n  -silent\n    \tsilent mode\n  -start string\n    \tstart day\n  -start-time string\n    \tstart time (default \"10:00\")\n  -v\tshow version\n  -version\n    \tshow version\n  -weekdays string\n    \tcomma separated weekdays (available: sun,mon,tue,wed,thu,fri,sat) (default \"mon,tue,wed,thu,fri\")\n\nExample\n  $ plantimeline -f path/to/config.json path/to/plan.json\n\n  $ plantimeline -out-format timeline-json -f path/to/config.json path/to/plan.json\n```\n\n\nholidays\n--------\nOutputs a list of dates not considered business days in CSV format. Obvious dates such as Saturdays and Sundays in Japan are not output.\n\n### Usage\n```console\n$ holidays -h\nUsage: holidays -locale \u003clocale\u003e\n\nOptions\n  -debug\n    \tdebug mode\n  -locale string\n    \tlocale of the fsmreporter (default \"ja\")\n  -silent\n    \tsilent mode\n  -v\tshow version\n  -version\n    \tshow version\n\nExample\n  $ holidays -locale ja\n  2025-01-01\n  2025-01-02\n  2025-01-03\n  ...\n```\n\n\ncriticalpath\n------------\nDetects critical paths from PFD. Identifies the most time-consuming routes in a project to help optimize scheduling.\n\n### Usage\n```console\n$ criticalpath -h\nUsage: criticalpath [options] \u003cpfd\u003e\n\nOptions\n  -ap string\n    \tpath to the atomic process fsmtable\n  -at string\n    \tpath to the atomic deliverable fsmtable\n  -atomic-deliverable string\n    \tpath to the atomic deliverable fsmtable\n  -atomic-process string\n    \tpath to the atomic process fsmtable\n  -best\n    \tsearch best plan\n  -better\n    \tsearch better plan\n  -cd string\n    \tpath to the composite deliverable fsmtable\n  -composite-deliverable string\n    \tpath to the composite deliverable fsmtable\n  -config string\n    \tpath to the run config file\n  -debug\n    \tdebug mode\n  -f string\n    \tpath to the run config file\n  -g string\n    \tpath to the group table\n  -group string\n    \tpath to the group table\n  -locale string\n    \tlocale of the fsmreporter (default \"ja\")\n  -m string\n    \tpath to the milestone table\n  -max-results int\n    \tupper bound of the number of results to return \u003e= 1 (default 3)\n  -maximal-available-allocations-threshold int\n    \tuse only maximal available allocations if number of newly allocatable atomic processes is greater than the threshold. do not use maximal available allocations if threshold is not positive (default 10)\n  -milestone string\n    \tpath to the milestone table\n  -node-budget int\n    \tupper bound of the number of nodes to expand \u003e= 1 (default 10000)\n  -p string\n    \tpath to the PFD\n  -pfd string\n    \tpath to the PFD\n  -poor\n    \tsearch plan by greedy algorithm (faster than best and better)\n  -quality string\n    \tquality preset (available: s, m, l, xl, xxl) (default \"small\")\n  -r string\n    \tpath to the resource fsmtable\n  -random-seed int\n    \trandom seed\n  -resource string\n    \tpath to the resource fsmtable\n  -restarts int\n    \tnumber \u003e= 0 of restarts for diversity\n  -silent\n    \tsilent mode\n  -top-k-per-state int\n    \tupper bound of the number of transitions to consider per state \u003e= 1 (default 128)\n  -v\tshow version\n  -version\n    \tshow version\n  -weight float\n    \tweight \u003e= 1.0 of Weighted A*. closer to 1.0 means closer to A*, greater than 1.0 means closer to greedy (default 2)\n\nExample\n  $ criticalpath path/to/pfd.drawio -a path/to/atomic_proc.tsv -r path/to/resource.tsv\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkuniwak%2Fpfd-tools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkuniwak%2Fpfd-tools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkuniwak%2Fpfd-tools/lists"}